5

我看到 2.3.4 和 4.2 之间 onNewIntent 调用的行为有所不同。

我有一个活动launchMode=singleTask。根据我对 singleTask 工作原理的理解,每次从任务列表中恢复活动时,onNewIntent都应该调用它。

这是 2.3.4 (LG P990) 上发生的事情,当我开始一项活动时,按“home”将其移至前台,然后从任务列表中恢复(长按“home”):

D/NewIntent(23314): onPause
D/NewIntent(23314): onNewIntent
D/NewIntent(23314): onResume
D/NewIntent(23314): onPause
D/NewIntent(23314): onNewIntent
D/NewIntent(23314): onResume


在 4.2 (Nexus 4) 上相同:

D/NewIntent(12960): onPause
D/NewIntent(12960): onResume
D/NewIntent(12960): onPause
D/NewIntent(12960): onResume

如您所见,未调用 onNewIntent。

有人可以解释一下发生了什么吗?

4

2 回答 2

1

在我试图解决这个困境时头疼的时候重新显示一个单一任务活动我不得不创建一个“中间人”——即一个单独的(自我)IntentService,它将通过其 onHandleIntent 方法接收一个 Bundle,然后立即触发关闭一个新的意图(到你的 singleTask 活动)。

我刚刚在运行 2.3.7 和 4.1.2 的设备上进行了测试——onNewIntent 每次都会调用 singleTask 活动。

hth

于 2013-07-19T00:11:41.293 回答
1

我在 4.2.2 上使用 Galaxy Nexus 时遇到了同样的问题。该代码是在模拟的 Nexus S (API 15) 上开发的。我最终将逻辑从 onNewIntent() 移到了 onResume()。

于 2013-05-26T12:11:22.993 回答