你后台的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詳解。
