2016-03-23 38 views
2

我有一個Activity,其中我初始化一個類成員變量onCreate()。在某些情況下,我需要startActivity()這意味着這個Activity變成停止狀態。當我回來時,我需要使用這個變量。當Activity停止時,Android是否清理Activity的成員變量

這在大多數手機中都能正常工作,但我的用戶也遇到了一些問題,因爲會員在手機上變爲null。該成員只包含一些StringPOJO

Android是否清理Activity的成員變量以釋放內存?

+0

onCreate()是否是本地成員? –

+0

他形容它是一個「成員變量」,意思是不是本地的 - 假設描述是準確的。你是否搜索過變量的用法,以確保你沒有像'onStop'那樣將其設置在其他地方? – nasch

+0

對不起,我的描述。該成員屬於該活動,不屬於本地。我確定在初始化後我沒有設置變量。 –

回答

1

即使未完成活動,如果調用onDestroy,那些成員變量將被清除。您可以在開發人員設置中打開「不要讓活動保持活動狀態」來模擬此操作。一旦啓用,再次開始新的活動,然後暫停(即擊中home鍵)

要解決這個問題,你需要將這些成員變量存儲的onSaveInstanceState,然後使用savedState摞的onCreate

恢復它們
+0

但我的活動沒有onDestroy調用,它只是被onStop調用。當onStop調用某個時候,這些成員變量會被清除嗎? –

+0

即使您沒有調用完成(),也可以調用onDestroy。這可能發生在內存不足或其他問題時。如果你打開不保持活動活動設置,你會明白我的意思。在這種情況下,您會看到onStop和onSaveInstanceState被調用。如果您的活動在暫停時被銷燬,則onCreate會再次被調用,並且savedState包不會爲空。 – craya

相關問題