正如上面提到的,我通過進入開發人員選項測試這一點,打開「不要保持活動」。
使用這種方法,我發現當一個活動從內存中移除時,原始意圖被維護。
當我離開活動時立即調用onDestroy。當我回到原始活動onCreate被調用與最初發送的Intent中相同的值。
以下代碼被用作我的測試平臺。
public class MyActivity extends Activity {
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String extra = getIntent().getStringExtra("test");
((TextView) findViewById(R.id.test)).setText(extra);
}
public void onClick(View view) {
Intent i = new Intent(this, MyActivity.class);
i.putExtra("test", ""+Math.random());
startActivity(i);
}
@Override
protected void onDestroy() {
Log.d("Test", "onDestroy");
super.onDestroy(); //To change body of overridden methods use File | Settings | File Templates.
}
}
因此,要回答你的問題,節省了意向書數據是多餘的onSavedInstanceState。你應該保存任何改變或需要保留但不能永久保存的東西。
要測試這一點,請轉到開發人員選項,並選中「不要保留活動」選項。請記住要關閉它,因爲許多應用程序都會中斷。如果以後沒有人回答,我會爲你驗證。 –
如果您在活動中沒有做特別的事情,那麼重新創建它的一種簡單方法是更改設備的方向(例如,從縱向到橫向)。 – Henry
@Mikedg不要讓活動像你在殺死他們一樣嗎? (因爲某些按鈕如back和「home」(這是一個使用onActivityResult返回第一個活動的按鈕) – Raigex