onSaveInstanceState(Bundle outState)的調用時機


 原文摘自: http://handsomeliuyang.iteye.com/blog/1407044

 

Activity的方法onSaveInstanceState(Bundle outState),按照文檔里說的,這個方法是在內存不夠時,系統要強制殺掉這個Activity時,進行調用的。

 

但經過我的測試,發現這個方法並不是在系統內存不夠時,要殺掉Activity時,才調用的。

 

測試結果:

1. 只要Activity不finish,Activity進入后台(比如Home鍵,跳轉到其他的Activity),則其就會調用onSaveInstanceState(Bundle outState)方法,而且這個方法是在onPause方法之間進行調用的。

2. 如果Activity是執行了finish方法,才進入的后台,則不調用這個onSaveInstanceState(Bundle outState),而且下次再進入時,也不會使用這個保存的數據。

3. 在系統殺掉Activity所在的進程時,onSaveInstanceState(Bundle outState)方法根本就沒有調用過。

 

總結:系統在殺進程時,不可能有時間去執行多余的代碼,也只有這種方法,才能保存Activity里的最新數據,所以onSaveInstanceState(Bundle outState)會被執行多次,並不是只有一次。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM