活动忽略意图的额外字段

时间:2010-05-26 10:08:47

标签: android android-intent

例如,

在ActivityA中,有一个按钮可以创建一个Intent,它将在新任务中启动ActivityB,如下所示:

Intent i = new Intent(this, ActivityB.class);
i.setData(Uri.parse("http://www.google.com"));
long timestamp = System.currentTimeMillis();
i.putExtra("ts", timestamp);
i.addFlag(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.d(TAG, "Sending: " + timestamp);
startActivity(i);

然后在ActivityB的onResume()方法中,有这段代码来检查时间戳:

long timestamp = getIntent().getExtras().getLong("ts");
Log.d(TAG, "Receiving: " + timestamp);

现在我第一次从ActivityA调用ActivityB时,得到以下日志:

Sending: 120006000
Receiving: 120006000

然后,如果我在后台运行ActivityB(按Home键),然后启动ActivityA然后再次调用ActivityB,则会打印以下内容:

Sending: 120013000
Receiving: 120006000

似乎虽然ActivityB被新的Intent带到了前面。意图中的额外字段被遗忘。

这是一个错误还是预期的行为?

2 个答案:

答案 0 :(得分:1)

只需阅读文档:

http://developer.android.com/reference/android/app/Activity.html#getIntent%28%29

getIntent()返回启动活动的Intent。如果活动已在背景中运行,那么您不会启动活动B,而是将其带到前面。

答案 1 :(得分:0)

也许你应该听onNewIntent不仅仅是onResume?