このlibを使用して画像を表示するアクティビティがいくつかあります。問題は、アプリのメモリが不足していることです。gc.clean()、null参照、imageloaderオブジェクトでclearを呼び出そうとしましたが、無駄でした。
MATで、同じアクティビティのオブジェクトが複数あり、間違っていない限り、デフォルトの動作であることがわかりました。私はsingleInstanceを使用して複数のインスタンスを抑制しましたが、これはメモリリークに役立ちました。
現在、singleInstanceが原因で、ナビゲーションに問題があります。singleInstanceを続行するか、複数のインスタンスでメモリリークを修正する必要があると思いますか?
これがImageViewgcroots検査です:
UPD:
Bitmap bitmap=null;
URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setInstanceFollowRedirects(true);
InputStream is=conn.getInputStream();
OutputStream os = new FileOutputStream(f);
Utils.CopyStream(is, os);
os.close();
bitmap = decodeFile(f);
return bitmap;
ImageView imageView = (ImageView) convertView;
if(convertView == null){
imageView = new ImageView(_currentActivity);
}
UPD2(ナビゲーション戦略):
ホームアクティビティ(ギャラリー付き)とプロファイルアクティビティを開始するボタンが付いた一定のヘッダーがあります。次に、リストビュー(imageviews +ラベルで構成される)を使用して別の3つのアクティビティを指す3つのボタンを保持するサブヘッダーがあります。
これらのヘッダー、サブヘッダー要素は、アプリケーションのすべてのアクティビティで使用できます。リンクボタンは次のことだけを行います。
startActivity(new Intent(getActivity(), MainActivity.class));
また
Intent activityIntent = new Intent(getActivity(), SomeActivityWithListViewInside.class);
// passing some data like list id
activityIntent.putExtra("list_id", listId);
startActivity(activityIntent);
したがって、これらのアクティビティインスタンスは、これらのstartActivity呼び出しによって引き起こされます-この問題を回避するために、singleTopまたはその他のインテントパラメーターで遊ぶ必要があると思いますか?