如上所述,我通过进入开发人员选项并打开“不保留活动”进行了测试。
使用这种方法,我看到当从内存中删除活动时,原始 Intent 得以保留。
当我离开活动时,会立即调用 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 中保存 Intent 数据是多余的。您应该只保存已更改或需要保留但不会永久保存的任何内容。