我知道我可以在onPause()中使用isFinishing()來知道某個活動是否將被finish()所殺死。我怎麼知道一個活動將被操作系統殺死?
然後,我怎麼能知道一個活動將由於內存不足而被OS暫時殺死?
謝謝。
我知道我可以在onPause()中使用isFinishing()來知道某個活動是否將被finish()所殺死。我怎麼知道一個活動將被操作系統殺死?
然後,我怎麼能知道一個活動將由於內存不足而被OS暫時殺死?
謝謝。
根據docs,onDestroy
應在活動銷燬之前調用,無論原因如何。如果完成請求,isFinishing
將返回true。所以如果它是錯誤的,你可以假定系統需要完成。
然而,隨着文檔也說
注:保存 數據這種方法 不要指望被稱爲一個地方!
一般而言,您無法保證您的活動會被很好地殺死。像任務殺手這樣的事情會影響生命週期。
使用或onSaveInstanceState
正確保存東西。
你不能。
您的活動可能會消失,而您的應用程序的其餘部分無法繼續使用,在這種情況下,onDestroy會被調用。不過也有可能你的整個應用程序會立即被殺死,就像unix中的kill -9一樣。你的應用目前無法運行任何代碼,它會立即死亡,並且不會有任何警告。
要正確處理此問題,您需要設計應用程序以將所有重要信息保存到onPause中的磁盤,並準備好稍後在onCreate中檢索它(如果需要)。
它看起來像Android只殺死進程而不是單個活動。請參閱http://stackoverflow.com/questions/5227071/理解 - 完成 – Kai 2011-03-08 18:30:13
這不是一個「唯一」的事情。如果你的代碼依賴於Android的殺死進程(應用程序),那就錯了。如果您的代碼依賴Android僅查看活動,那就錯了。也可以處理。 – 2011-04-04 04:04:42
請參閱此文檔http://developer.android.com/reference/android/app/Activity.html#isFinishing%28%29。檢查此活動是否處於完成過程中,可能是因爲您調用了finish()或其他人已要求完成該活動。 onPause()通常使用這個來確定活動是簡單地暫停還是完全結束。 isFinishing()也是如此,如果操作系統正在殺死該活動。我對嗎? – Kai 2011-03-08 00:33:57
我讀到,這意味着如果操作系統正在殺死它,它不會是真的,但我沒有親自測試過它。爲什麼你需要知道操作系統是否在殺死它? – 2011-03-08 00:40:59