【问题标题】:onNewIntent is not called in JellyBeanJellyBean 中不调用 onNewIntent
【发布时间】:2013-05-24 10:22:37
【问题描述】:

我发现 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 没有被调用。

谁能解释一下这是怎么回事?

【问题讨论】:

标签: java android android-activity android-4.2-jelly-bean


【解决方案1】:

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

【讨论】:

  • 是的,到目前为止还没有找到答案,不得不停止依赖 onNewIntent 调用。
【解决方案2】:

在我试图解决这个困境Re-showing-a-singletask-activity 时头疼的时候,我不得不创建一个“中间人”——即一个单独的(自)IntentService,它将通过其 onHandleIntent 方法接收一个 Bundle,然后立即启动一个新的意图(到你的 singleTask 活动)。

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

【讨论】:

  • 我知道我不应该这样做,但是……谢谢。我搜索了很多,看看我是否可以在不使用服务的情况下做到这一点,但似乎没有办法。认为我想要的只是在触摸通知时不会重新创建我的活动(如果它已经在顶部)......无论如何,这没什么大不了的,因为我已经创建了一个合适的 IntentService 来处理另一个意图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多