用于创建活动的意图是否存在?

Rai*_*gex 5 android android-intent oncreate android-activity

关于这个问题的更多内容.

我想知道如果我没有杀死它,我在创建一个Activity的意图中传递的数据是否会保留.

示例:活动A使用额外数据String(SomeStringValue)调用活动B. 然后活动B调用调用D的C.现在在某个时间活动B被销毁(例如为了节省内存),当我回到活动B时需要重新创建它(例如再次调用onCreate)但是因为我使用了后退按钮而不是传递意图我的先前意图仍然存在,我可以得到我需要的数据或将数据消失.

我试图自己测试但是我无法在不杀死整个应用程序的情况下再次调用.

Mik*_* dg 12

如上所述,我通过进入开发者选项并打开"不要保持活动"来测试这一点.

使用这种方法,我发现当从内存中删除活动时,将保留原始的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.
}
Run Code Online (Sandbox Code Playgroud)

}

因此,要回答您的问题,在onSavedInstanceState中保存Intent数据是多余的.您应该保存任何已更改或需要保留但不会永久保留的内容.