私のAndroidアプリケーションでは、私は2つのアクティビティがあります:メインと記事。私のアプリケーションはMainで始まります。記事では、サーバーからダウンロードした画像を表示しています。ここで バックプレスでの割り込みUrlConnection
は、サーバからイメージをダウンロードするためのコードです:public class SyncImage extends AsyncTask<Void, Void, Bitmap> {
private String url;
private URLConnection connection;
public SyncImage(String url) {
this.url = url;
}
@Override
protected Bitmap doInBackground(Void... voids) {
Bitmap img;
try {
URL source = new URL(url);
connection = source.openConnection();
Handler.addUrlConnection(connection);
connection.setConnectTimeout(10000);
connection.setReadTimeout(10000);
connection.connect();
img = BitmapFactory.decodeStream(connection.getInputStream());
return img;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}
記事の活動
私は、ユーザーのプレスバックボタンはすべて、メイン画面に戻る場合は、その欲しいprivate void downloadImages(ArrayList<String> images) {
for (String image : images) {
SyncImage sync = new SyncImage(image);
sync.execute();
// Rest of the code
}
}
UrlConnectionオブジェクトは、実行をキャンセル/停止する必要があります。
sync.cancel(true)を使用してSyncImageオブジェクトをキャンセルできますが、処理中のURLConnectionオブジェクトではなくAsyncTaskオブジェクトのみが停止します。
したがって、実行中の実行UrlConnectionオブジェクトをキャンセルするにはどうすればいいですか?
あなたはasynctasksの多くを開始します。しかし、それらが順番に実行されるので、1つだけがアクティブになります。だから、あなたはすべてを取り消すことができ、他のものがまだ確立されていないので、ただ1つのURL接続が残るでしょう。 – greenapps