【问题标题】:android intent gets redelivered when launching with home button使用主页按钮启动时,android意图被重新传递
【发布时间】:2011-06-23 08:08:28
【问题描述】:

这是我遇到的问题:

我通过按下包含额外标记的通知栏来启动活动,以标记活动是从通知开始的。如果设置了来自通知的额外内容,我会在我的活动的 oncreate 方法(这是我的应用程序的主屏幕)中使用这个标志来启动一个新屏幕。

所以这部分工作得很好。现在发生的情况是,当我单击通知并通过按返回键退出应用程序时,如果我之后通过按主页按钮从最近的应用程序重新启动它,它似乎重新传递了来自通知的最后一个意图,因此它启动了我的屏幕再次。我已经在清单中尝试了一堆标志,但到目前为止我还没有成功。

这是我用于活动的标志。

 android:clearTaskOnLaunch="true" 
    android:alwaysRetainTaskState="false"

这里有什么想法吗? 谢谢。

【问题讨论】:

  • 我正在为主屏幕使用 TabActivity。

标签: android android-activity android-intent


【解决方案1】:

好吧,事实证明,如果您的活动被声明为 singleTop,那么每次您按下主页按钮启动活动时,都会重新传递最后一个意图。

作为一种解决方法,我尝试在使用意图时使用 onConfiguration 更改来保存标志,但它不起作用,因为活动实际上已被破坏,而不仅仅是改变方向。最后我所做的是将该标志保存在共享首选项中,并在每次向 singleTop 活动发送新意图时将其设置为 false,并在每次使用意图附加内容时将其设置为 true。

问题已解决,但我很好奇这样的行为是正常的:(。

【讨论】:

  • 您可以使用if((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0)检查history中的意图是否NOT
  • neevek 你应该添加这个作为答案,解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多