2012-07-10 100 views
8

我可以知道知道活動是否已被銷燬的正確方法是什麼?目前,我正在使用以下方法。正確的方法來知道活動是否已被銷燬

private volatile boolean isOnDestroyCalled = false; 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    isOnDestroyCalled = true; 
} 

public boolean isOnDestroyCalled() { 
    return this.isOnDestroyCalled; 
} 

有沒有其他方法比上述更好?

+0

我不太明白你的問題,你什麼時候想知道這個?,你是在拖延這個活動還是在觸發銷燬? 你總是可以觸發Finish();摧毀它。以下是一些幫助:http://developer.android.com/reference/android/app/Activity.html – najk 2012-07-10 08:54:32

+2

我需要自己瞭解這一點,因爲我有一個異步任務觸發了活動的回調,可能已被銷燬同時。我的解決方法是在活動中保留對回調的引用,對回調中的活動進行引用,並在活動被銷燬時清空回調中的ref,以便回調在null時不執行任何操作。 – qix 2014-04-25 11:36:42

+0

@Linus到目前爲止最有名的技術是使用保留的實例片段:http://stackoverflow.com/questions/8417885/android-fragments-retaining-an-asynctask-during-screen-rotation-or-configuratio – 2014-04-26 02:19:15

回答

3

這樣可以工作,但有時候操作系統會關閉應用程序,如果其他應用程序需要優先處理時,它會處於非活動狀態。當然,我知道這種情況發生時,變量將被取消,不確定,但如果它在你的情況下使用揮發性轉到主內存。但確保您獲得正確價值的一種方法是將其保存在SharedPreferences中。

+2

它似乎不是一個好方法! – 2013-08-01 03:00:05

相關問題