標籤:android
最近項目中碰到了一個特別奇葩的問題,上stackoverflow搜尋了半天,最後終於一句話解決了,system.exit(0);沒錯,相信程式中都存在雙擊退出程式的功能,但是我用DDMS分析應用程式的記憶體,發現當我重複進入一個Activity的時候,記憶體長的很快,當然這塊涉及到記憶體最佳化的問題,記憶體的bug是我程式中持有了Activity的全域引用,並放到了一個靜態list中導致的,所以時間長了,我用ImageLoader載入不出來圖片。。。。就是這麼奇葩的現象。。。。無語了。好吧,接下來就是開始了漫長了尋找過程,最後發現代碼中我建立了一個靜態list,每次去網路請求就儲存了一個listener,listener裡面更新介面,當然介面就涉及到了View的建立,View的建立需要引用當前的Activity的Context,所以導致整個Activity都沒有釋放掉。。。坑爹啊!!!
上一個反反覆複進入一個Activity,記憶體不斷增大的問題解決了,接下來就該解決另一個問題了,我重重複復的進入我的Activty,發現app 的heapSize 不斷的增大,是什麼原因呢,我猜測的是,我進入主Activity的時候有一個進場動畫,需要在Assets中載入一張400多k的圖片,然後讓這個圖片在螢幕中正方形移動,好吧,但是過場動畫後,我及時的已經把圖片釋放掉了,但是為什麼每一次進入App,系統都多給我分配4~5兆呢,這不坑爹啊!我記憶體夠用啊。。。。。,上帝啊!好吧,繼續找。。。。,最後上stackOverFlow發現了問題的所在,我們在雙擊返回應用的時候,我們只是finish掉了Activity,這還不夠,應該調用System.exit(0);
加上這句話後,發現在退出應用後,heapSize直接釋放掉了30~40兆,這是什麼概念,當你重新進入應用的時候,就和你第一次安裝的時候系統給你分配的heapSize一樣,這就是我要的效果。
總結:在雙擊退出應用的時候,記得調用system.exit(0);這句話,釋放app的appSize。
android 重複進入app heapSize不斷增大的問題