2014-11-06 87 views
0

在我的Android應用程序中onSaveInstanceState()總是在應用程序進入後臺時調用。我的理解是onSaveInstanceState()將在操作系統殺死應用程序時調用。考慮到這一點,我設計了一些邏輯。但是,在執行過程中注意到這種奇怪的行爲。有沒有辦法區分onSaveInstanceState(),它是在操作系統殺死應用程序或在正常暫停中調用之後調用的。爲什麼onSaveInstanceState在onPause之後調用

回答

1

根據文檔:

此方法的活動之前調用可以被殺死,這樣,當它回來一段時間,在未來,它可以恢復其狀態。

換句話說,在操作系統終止活動之前不會立即調用該方法。當活動進入後臺並且有可能稍後恢復時調用它。在活動進入後臺之前立即保存狀態,可以讓系統在如何殺死應用程序方面有更大的靈活性......一旦它決定應用程序被殺死,它可以立即執行(不必擔心調用應用程序的onSaveInstanceState()方法纔可以這樣做)。

+0

理論看起來不錯。但實際上'onSaveInstanceState()'在每次暫停時都被調用。 – Ammar 2014-11-12 15:03:30

+0

確切地說,這就是爲什麼我想在我的答案中說。 :)它不會在系統真正殺死應用程序之前立即調用。當應用程序進入後臺時,會立即調用onSaveInstanceState(),以防系統稍後終止應用程序。 – 2014-11-12 15:17:10

+0

因此,在'onSaveInstanceState()'我們不知道它是正常的暫停或應用程序被操作系統殺死? – Ammar 2014-11-12 15:26:13

0

onSavedInstanceState()活動暫停之前被調用後是否會發生其擔保(它不是」不可見)。如果活動被故意銷燬(例如:用戶按下退格鍵),則不會調用onSavedInstanceState()。 onSavedInstanceState()的主要作用是保存視圖。

簡答:不,你不能。

欲瞭解更多信息,請閱讀:this。它也可用於碎片。

相關問題