【问题标题】:onNewIntent() not being called when there is another activity on top当顶部有另一个活动时,不会调用 onNewIntent()
【发布时间】:2015-04-20 20:58:52
【问题描述】:

似乎我的 MainActivity 的 onNewIntent() 没有被调用,当我在它上面有另一个 Activity 时,如果我关闭第二个 Activity 它确实被调用就好了,就像另一个 Activity 一样是在顶部是阻止消息? Activitys 在清单中都设置为 singleTop,我从通知中设置了 Intent

Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent pIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

有人知道哪里出了问题吗?

谢谢!

【问题讨论】:

  • 如果另一个Activity 在现有Activity 上可见,第一个将暂停然后停止。因此不会执行第一个Activity 中的代码。这是 Android 和 Activity 生命周期的标准。
  • 那么如果我想在点击通知并且顶部还有其他活动时调用一个函数,我将如何在不创建新活动的情况下做到这一点?

标签: android


【解决方案1】:

您可能已经在 google 上搜索过 - 关于为什么不调用 onNewIntent 有很多问题。

这可能取决于您正在进行测试的 android 版本,但您可以尝试将 Intent.FLAG_ACTIVITY_SINGLE_TOP 标志添加到您的意图中 - 即使您在清单中添加了它以及 Intent.FLAG_ACTIVITY_CLEAR_TOP

intent.setFlag(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_CLEAR_TOP);

这将删除您要启动的活动之上的活动。

但如果您的意图是让两个活动保持活动状态并在它们之间切换,那么请查看 android:taskAffinityFLAG_ACTIVITY_NEW_TASK

【讨论】:

  • 我尝试添加 Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP 但它没有关闭顶部的活动,它没有做任何事情。我可以关闭主要活动之上的任何活动。任何想法为什么它不起作用?
  • 其实很好用,不知道为什么第一次没有,谢谢!
  • 实际上,它似乎并没有一直工作,很奇怪 - 如果我按下主页按钮然后我点击通知,它就不会再清除它上面的活动了,它只是让人们看到它。
  • 我认为现在很好,我在 onCreate() 上有一些代码来修复由 android 安装程序以不同方式启动我的应用程序引起的其他一些错误,将其更改为现在看起来很好:@ 987654326@谢谢!
【解决方案2】:

验证是否为接收 Intent 的 Activity 设置了正确的启动模式。在他们的包中将launchMode 设置为“singleTop”,或者如果客户端在调用startActivity(Intent) 时使用了FLAG_ACTIVITY_SINGLE_TOP 标志。

【讨论】:

  • 设置为 singleTop 但看起来就像 Squonk 指出的那样,当它上面有另一个活动时,下面的活动不会执行任何代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
相关资源
最近更新 更多