我是否應該放棄在onStop()
或onDestroy()
中持有的觀點和其他數據?我應該放開onStop()或onDestroy()中的視圖引用等嗎?
- 如果我在
onDestroy()
版本中發佈我的應用程序的數據,它對android的內存不會很友好,我正確嗎?因爲我在onStop()之後仍然持有一些觀點。此外,它不保證被調用,我的活動無論如何都從內存中清除。 - 如果我在
onStop()
中發佈它,我必須在onStart()
中添加我的setContentView()
等等,它不會得到onCreate(Bundle)
交給的Bundle
。
請注意,我有一個非常大的應用程序,它由幾十個視圖組成,其中大部分是自定義的,並且由代碼而不是佈局文件添加。這很大程度上是由於我必須創建自定義尋呼機才能瀏覽頁面,因爲沒有任何內置視圖可以滿足我的目的(我試過......很難......)。
我已經通讀了所有相關的Android文檔,但我仍然沒有真正瞭解視圖層次結構Android自己保存/重新創建的內容以及我自己必須執行的操作。或者當所有這些都發生時,意味着Android從內存中刪除視圖層次結構。
更新問題:
Android的文檔這樣說:Note: Because the system retains your Activity instance in system memory when it is stopped, it's possible that you don't need to implement the onStop() and onRestart() (or even onStart() methods at all.
是否確定要堅持的一切,我爲什麼要在乎內存泄漏時,我的應用程序被停止像this文章說?如果它被破壞並重新創建,例如在屏幕旋轉後,我仍然從頭開始?
即使你放手參考它還是gc的標記和掃描的工作。 gc開始釋放內存。假設你有一個位圖。你可以在onPause()中調用bitmap.recycle()。但它仍然是gc的工作,以釋放內存 – Raghunandan
以獲取數據,使用Activity方法'getIntent()'來檢索當前意圖以及同樣傳入的任何額外內容。 – petey
考慮一下你有每個活動的背景的情況。您從第一次活動導航到第二次。第一項活動已暫停。但不會被破壞。您的第一個活動是在後臺。在這種情況下,您可以在onResume()中加載圖像,並在onPause()中解除綁定或回收。當gc踢進它的內存時。在這種情況下,它的工作原理注意:只有當需要回收內存時,操作系統纔會在後臺銷燬活動。 – Raghunandan