我有幾個活動,我在this lib幫助下顯示圖像。事情是應用程序內存不足。我試圖gc.clean(),空引用,調用清空imageloader對象,但徒勞。內存泄漏,singleInstance
在MAT中,我發現我有多個相同活動的對象,並且它是默認行爲,如果我沒有弄錯的話。我使用singleInstance來抑制多個實例,並幫助解決了內存泄漏問題。
現在,由於singleInstance,我遇到了導航問題。你認爲我應該繼續使用singleInstance還是嘗試修復多個實例的內存泄漏?
這裏的ImageView的GC根檢驗:
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(導航策略):
我有一個恆定報頭與啓動家庭活動按鈕(帶畫廊)和檔案活動;其次是有一個副標題,其中還包含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或任何其他意圖參數發揮,以避免這個問題 ?
你可以在你的代碼中獲取圖像嗎?你確定你在創建圖像時沒有給出活動上下文嗎?這可能是你的問題。單實例不會產生內存泄漏。 – ania
我傳遞了對適配器中活動的引用。 – user1462299