上記のように、開発者向けオプションに移動し、「アクティビティを保持しない」をオンにして、これをテストしました。
この方法を使用すると、アクティビティがメモリから削除されても元のインテントが維持されることがわかります。
onDestroyは、アクティビティを終了するとすぐに呼び出されます。元のアクティビティに戻ると、onCreateは、最初に送信されたのと同じインテントの値で呼び出されます。
次のコードがテストベッドとして使用されました。
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で冗長です。変更されたもの、または保存する必要があるが永久に保持されないものはすべて保存する必要があります。