2012-03-08 75 views
0

我認爲我的問題是因爲我濫用繼承。我有4個活動,都擴展了共享公共代碼的BaseActivity(onClick,onItemClick,靜態和非靜態方法)。每項活動都從網絡獲取數據 - 包括圖像。當我使用整個應用程序的時間更長時,我有內存泄漏錯誤(虛擬機不會讓我們分配xxx字節)和應用程序粉碎。複雜的活動問題

如果我正確理解 - 這是因爲通過擴展這4個活動,我使它們像基本活動的內部類一樣 - 這就是爲什麼當我在它們之間切換時不會調用它們的onDestroy()方法。此外,GC不收回任何RAM,並且堆被阻塞。 BaseActivity擁有所有數據(例如圖像),從而可以在單擊「後退」按鈕時顯示它們而無需重新創建數據。

如果這是真的 - 另一種選擇是通過使用助手類來共享通用代碼來分離它們 - 但是,當我將在活動之間切換時 - 它們將一遍又一遍地下載它的數據。

我是對的,有沒有解決方案?

回答

0

因此,如果沒有看到一些代碼就很難回答,但擴展Activity類應該不會導致內存泄漏。您的網絡請求中可能存在大量不必要的數據。你說你正在下載圖片,對吧?我會先看看那裏。