若后台的Activity被系統回收...


你后台的Activity被系統回收怎么辦?如果后台的Activity由於某種原因被系統回收了,如何在被系統回收之前保存當前狀態?

       

    除了在棧頂的Activity,其他的Activity都有可能在內存不足的時候被系統回收,一個Activity越處於棧底,被回收的可能性就越大。

protected void onSaveInstanceState(Bundle outState) {

    super.onSaveInstanceState(outState);

    outState.putLong("id", 1234567890);

}

public void onCreate(Bundle savedInstanceState) {

//判斷 savedInstanceState是不是空.

//如果不為空就取出來

        super.onCreate(savedInstanceState);

}

 

如果我們沒有覆寫onSaveInstanceState()方法,此方法的默認實現會自動保存Activity中的某些狀態數據,比如Activity中各種UI空間的狀態。Android應用框架中定義的幾乎所有的UI控件都恰當的實現了onSaveInstanceState()方法,因此當Activity被摧毀和重建時,這些UI控件會自動保存和恢復狀態數據。比如EditText控件會自動保存和恢復輸入的數據,而CheckBox控件會自動保存和恢復選中狀態。開發者只需要為這些控件指定一個唯一的ID(通過設置android:id屬性即可),剩余的事情就可以自動完成了。如果沒有為控件指定ID,則這個控件就不會進行自動的數據保存和恢復操作。

由上所述,如果我們需要覆寫onSaveInstanceState()方法,一般會在第一行代碼中調用該方法的默認實現:super.onSaveInstanceState(outState)。

     詳見:Android開發之InstanceState詳解。


免責聲明!

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



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