原文摘自: 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)會被執行多次,並不是只有一次。