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

Android 如何避免发送到Activity::onCreate()的旧意图,android,android-intent,Android,Android Intent,已搜索但未找到解决方案。是否有人有同样的问题并找到解决方法 具有处理共享的活动(使用launchMode=“singleTask”) 活动运行时,打开摄像头应用程序,通过此应用程序进行共享。此活动的onNewIntent(Intent-Intent)通过Intent{act=android.Intent.action.SEND…}调用。共享请求已得到处理,目前为止效果良好 然后点击“后退”按钮关闭应用程序。 现在打开running应用程序托盘(长按home按钮),然后选择此应用程序将其打开 调用

已搜索但未找到解决方案。是否有人有同样的问题并找到解决方法

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

活动运行时,打开摄像头应用程序,通过此应用程序进行共享。此活动的onNewIntent(Intent-Intent)通过Intent{act=android.Intent.action.SEND…}调用。共享请求已得到处理,目前为止效果良好

然后点击“后退”按钮关闭应用程序。 现在打开running应用程序托盘(长按home按钮),然后选择此应用程序将其打开

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

在这种情况下,它将始终在处理某些共享请求时打开应用程序,这些请求以前已经处理过

有没有办法避免再次传递已消耗的意图

谢谢!
/谢谢塔托!Intent.FLAG_ACTIVITY_从_历史中启动的_就是这种情况的解决方案。有关详细信息,请参阅Tato在stackoverflow.com/a/25535915/1970641上的回答。

我认为您无法避免再次传递已消耗的意图。但您可以检查活动是否从历史记录中启动,如果是,请不要再次处理它。看看这个答案:谢谢塔托。问题是,有时您无法判断活动是否重新启动。在点击“后退”按钮并从正在运行的应用程序托盘重新打开应用程序后,onCreate()以saveInstanceState==null的形式传入,因此它与新的开始相同。这就是我使用组合的原因。您是否检查了
boolean launchedFromHistory=intent!=null?(intent.getFlags()&Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY)!=0:false;
答案的一部分?我使用单顶,并
getFlags&FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
返回始终为真。。