这是我遇到的问题:
我通过按下通知栏开始一个 Activity ,其中包含一个额外的标记该 Activity 是从通知开始的。如果设置了来自通知的额外内容,我会在我的 Activity (这是我的应用程序的主屏幕)的 oncreate 方法中使用此标志以在该屏幕之上启动一个新屏幕。
所以那部分效果很好。现在发生的事情是当我单击通知并通过按后退键退出应用程序时,如果我之后通过按主页按钮从最近的重新启动它它似乎重新传递来自通知的最后一个 Intent 所以它启动我的屏幕再次。我在 list 中尝试了一堆标志,但到目前为止我还没有成功。
这是我在 Activity 中使用的标志。
android:clearTaskOnLaunch="true"
android:alwaysRetainTaskState="false"
这里有什么想法吗? 谢谢。
最佳答案
好的,事实证明,如果您的 Activity 被声明为 singleTop,那么每次您通过按下主页按钮启动 Activity 时,都会重新传递最后一个 Intent。
作为解决方法,我尝试使用 onConfiguration changed 来在使用 intent 时保存一个标志,但它没有用,因为 Activity 实际上被破坏了,它不仅仅是改变了方向。最后,我所做的是将该标志保存在共享首选项中,并在每次我向 singleTop Activity 发送新 Intent 时将其设置为 false,并在每次使用 intent extra 时将其设置为 true。
所以问题已解决,但我很好奇这样的行为是如何正常的:(。
关于使用主页按钮启动时,android intent 会重新传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6451082/