关机后Android Activity Intent仍然存在

LEO*_*LEO 6 notifications android android-intent destroy android-activity

SETUP One Activity,SingleTop,从通知中接收意图.意图由活动消耗.用户点击后退按钮结束活动.调用onDestory并且isFinishing()返回true.长按Home键以显示最近的应用程序.启动先前已关闭的应用

当用户在活动上按下主键时调用onStop时,onNewIntent会出现类似的情况.

问题在完成活动后重新创建活动时,将使用与通知相同的意图.我不想要这个.有没有办法告诉系统我们已经消耗了该通知,因此停止将其提供给活动?解决?建议?

我试过了什么

  1. 我试图从意图中删除额外内容.不工作. Clearning Activity的意图数据随机返回,为什么?
  2. 我尝试使用saveInstanceState()来保持意图的时间戳.但是,当活动被销毁时,onIstanceState(Bundle)被删除(在onCreate中为null).
  3. 我试图在活动中将intent设置为null,但这不起作用

这个问题非常类似于以下问题:http://grokbase.com/t/gg/android-developers/119jyzf492/getintent-removeextra-in-activity-doesnt-work-for-android-launchmode-"singletask"

Jas*_*sby 0

听起来您用来启动 Activity 的 Intent 可能已作为“粘性”Intent 进行广播。粘性意图使意图即使在被消耗后也可用。如果是这种情况,您的应用程序将获得之前使用的相同 Intent。如果您可以检查正在广播该意图的任何内容,看看它是否是粘性意图。您将在清单中看到这一点:

<uses-permission android:name="android.permission.BROADCAST_STICKY"/>
Run Code Online (Sandbox Code Playgroud)

它将通过以下方法发送:

sendStickyBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)

如果您没有能力更改它(如果不是您的应用程序调用它),那么您可能只需要找到一种适合您的应用程序的方法来处理它。这只是一种可能性,没有看到任何代码。