我对我正在开发的应用程序中遇到的这种行为感到困惑......
短的:
当用户按下后退按钮离开应用程序然后按下最近按钮重新进入应用程序时,意图数据不会被清除。(每隔一种情况,意图数据被清除)
长:
我有一个带有启动屏幕的应用程序,用于收集从 URI 方案传入的数据。然后,我设置了将数据转发到主要活动的意图。主要活动有片段并且基于主/细节模板。
Intent数据在所有情况下都会被清除,例如按home键然后返回应用程序,按最近的应用程序按钮然后返回应用程序等。唯一没有清除intent数据的情况是当用户按下后退按钮然后按下最近的应用程序按钮以返回应用程序时。
涉及意图的相关代码片段:
// Splash Screen Activity
@Override
protected void onPostExecute(Void result) {
// Data is done downloading, pass notice and app ids to next activity
Intent intent = new Intent(getBaseContext(), ListActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("id1", id1);
intent.putExtra("id2", id2);
intent.putExtra("id3", id3);
startActivity(intent);
finish();
}
// ListActivity retrieving intent data
Intent intent = getIntent();
if (intent != null) {
this.id1 = intent.getExtras().getString("id1");
this.id2 = intent.getExtras().getString("id2");
this.id3 = intent.getExtras().getString("id3");
}
// ListActivity clearing intent data
@Override
public void onPause() {
super.onPause();
// Clear intent data
Intent intent = getIntent();
intent.putExtra("id1", "");
intent.putExtra("id2", "");
intent.putExtra("id3", "");
}
我想指出我也尝试过使用 intent.removeExtra("id1") 但这也不起作用。
知道发生了什么吗?即使总是调用 onPause() 来清除 Intent 数据,Android 也好像保留了旧的 Intent。