如何避免旧的意图被发送到Activity :: onCreate()

问题描述:

搜索并找不到解决方案。有没有人有同样的问题,并找到解决办法?如何避免旧的意图被发送到Activity :: onCreate()

具有处理共享的活动(与launchMode =“singleTask”)。

当活动正在运行时,打开相机应用程序以通过此应用程序进行分享。此活动的onNewIntent(Intent intent)用Intent {act = android.intent.action.SEND ...}调用。共享请求处理得非常好。

然后点击“返回”按钮关闭应用程序。 现在打开正在运行的应用程序托盘(长按主页按钮),并选择此应用程序来打开它。

应用程序的活动onCreate()使用savedInstanceState == null调用,并且上次共享请求的相同意图传入:{act = android.intent.action.SEND ...}。

在这种情况下,它会一直打开应用程序来处理一些共享请求,这已经处理过。

有没有办法避免消耗的意图再次被传入?

谢谢! /L

+0

我不认为你可以避免消耗的意图再次通过。但是,您可以检查活动是否从历史记录启动,如果是这种情况,请不要再处理它。看看这个答案:http://*.com/a/25535915/1970641 – 2014-10-08 20:09:33

+0

谢谢塔托。问题有一段时间你无法分辨活动是否重新启动。在点击“返回”按钮并从正在运行的应用程序托盘中重新打开应用程序的情况下,onCreate()会以saveInstanceState == null的形式传入,因此它与新的开始时相同 – lannyf 2014-10-08 20:19:38

+0

这就是为什么我'你是否检查过布尔型launchFromHistory = intent!= null?(intent.getFlags()&Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY)!= 0:false;'答案的一部分? – 2014-10-08 20:24:56

谢谢Tato! Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY是这种情况的解决方案。有关详细信息,请参阅*.com/a/25535915/1970641中的Tato的答案。