asyncTask を使用して Web サービスから画像を表示する小さな Android アプリケーションを作成しています。コードは機能しますが、このビットマップをリサイクルする必要があることに気付きました。
私の質問は、このビットマップを使い終わった後にリサイクルする方法はありますか?
onStop() を使用して解決策を試みましたが、ビットマップがリサイクルされなかったか、画像がまったく表示されませんでした。
これが私のOnCreateです
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Other unrelated things
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
imageUrl = bundle.getString("imageUrl");
displayImage();
}
そして、ここに私のAsyncTaskがあります
private void displayImage() {
new AsyncTask<String, Void, Bitmap>() {
protected Bitmap doInBackground(String... params) {
try {
return loadBitmap(params[0]);
} catch (Exception e) {
Logger.e(TAG, getString(R.string.error_loading_image_bitmap));
return null;
}
}
protected Bitmap loadBitmap(String urlSpec) throws IOException {
InputStream is = new URL(urlSpec).openStream();
try {
return BitmapFactory.decodeStream(is);
} finally {
is.close();
}
}
protected void onPostExecute(Bitmap bitmap) {
if (bitmap != null) {
ImageView invoiceItemImageView = (ImageView) findViewById(R.id.some_id_here);
invoiceItemImageView.setImageBitmap(bitmap);
}
}
}.execute(imageUrl);
}