2011-03-08 104 views

回答

2

根據docs,onDestroy應在活動銷燬之前調用,無論原因如何。如果完成請求,isFinishing將返回true。所以如果它是錯誤的,你可以假定系統需要完成。

然而,隨着文檔也說

注:保存 數據這種方法 不要指望被稱爲一個地方!

一般而言,您無法保證您的活動會被很好地殺死。像任務殺手這樣的事情會影響生命週期。

使用或onSaveInstanceState正確保存東西。

+0

請參閱此文檔http://developer.android.com/reference/android/app/Activity.html#isFinishing%28%29。檢查此活動是否處於完成過程中,可能是因爲您調用了finish()或其他人已要求完成該活動。 onPause()通常使用這個來確定活動是簡單地暫停還是完全結束。 isFinishing()也是如此,如果操作系統正在殺死該活動。我對嗎? – Kai 2011-03-08 00:33:57

+1

我讀到,這意味着如果操作系統正在殺死它,它不會是真的,但我沒有親自測試過它。爲什麼你需要知道操作系統是否在殺死它? – 2011-03-08 00:40:59

2

你不能。

您的活動可能會消失,而您的應用程序的其餘部分無法繼續使用,在這種情況下,onDestroy會被調用。不過也有可能你的整個應用程序會立即被殺死,就像unix中的kill -9一樣。你的應用目前無法運行任何代碼,它會立即死亡,並且不會有任何警告。

要正確處理此問題,您需要設計應用程序以將所有重要信息保存到onPause中的磁盤,並準備好稍後在onCreate中檢索它(如果需要)。

+1

它看起來像Android只殺死進程而不是單個活動。請參閱http://stackoverflow.com/questions/5227071/理解 - 完成 – Kai 2011-03-08 18:30:13

+0

這不是一個「唯一」的事情。如果你的代碼依賴於Android的殺死進程(應用程序),那就錯了。如果您的代碼依賴Android僅查看活動,那就錯了。也可以處理。 – 2011-04-04 04:04:42

相關問題