1
ListActivityに問題があり、一度に5アイテムずつ検索結果が読み込まれ、約45アイテムに達するとメモリ不足例外がスローされます。long ListActivityのメモリ不足
Webサーバーから画像を非同期的に読み込みます。私がこれをコメントすれば、問題のないリスト(aprox 58項目)の一番下にスクロールできます。私はbitmap.Recycle()を呼び出す必要があることを知っているビットマップを私はもはや使用していますが、私はそれを呼び出す必要があります見つけることはありません。
class ImageLoadingTask extends AsyncTask<String, Void, Bitmap> {
private final WeakReference<ImageView> imageViewReference;
String url;
public ImageLoadingTask(ImageView imageView) {
imageViewReference = new WeakReference<ImageView>(imageView);
imageViewReference.get().setImageDrawable(null);
}
@Override
protected void onPostExecute(Bitmap result) {
if (isCancelled()) {
result = null;
}
if (imageViewReference != null) {
ImageView imageView = imageViewReference.get();
if (imageView != null) {
imageView.setImageBitmap(result);
//result.recycle();
}
}
}
@Override
protected void onPreExecute() {
if (imageViewReference != null) {
ImageView imageView = imageViewReference.get();
if (imageView != null) {
imageView.setImageResource(R.drawable.icon);
}
}
}
@Override
protected Bitmap doInBackground(String... params) {
url = params[0];
return Application.get(getContext()).loadBitmap(url);
}
}
これは、onPostExecuteメソッドのとおりです。イメージがイメージビューにアサインされた直後にリサイクルを呼び出すと、リサイクルされたイメージを使用するという例外がありません。
誰かが助けることができますか?
事前のおかげで、そして私の英語のため申し訳ありません:P
私はその方法を実装しようとし、あなたにお知らせします。ありがとう。 –
ありがとうございます。それは魅力のように機能します! –