【问题标题】:How to avoid the old intent to be sent to Activity::onCreate()如何避免将旧意图发送到 Activity::onCreate()
【发布时间】:2014-10-08 19:59:17
【问题描述】:

已搜索但未找到解决方案。有没有人遇到同样的问题并想办法解决?

拥有处理共享的活动(使用 launchMode="singleTask")。

Activity 运行时,打开相机应用通过此应用进行分享。此活动的 onNewIntent(Intent intent) 使用 Intent { act=android.intent.action.SEND...} 调用。共享请求处理完毕,目前一切顺利。

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

应用的Activity onCreate() 调用时使用savedInstanceState==null,最后一次分享请求的intent 也被传入:{act=android.intent.action.SEND ...}。

在这种情况下,它总是会在处理一些共享请求时打开应用程序,这在之前已经处理过。

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

谢谢! /L

【问题讨论】:

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

标签: android android-intent


【解决方案1】:

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

【讨论】:

  • 我使用 singleTop 并且 getFlags & FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY 总是返回 true..
猜你喜欢
  • 2011-10-17
  • 2014-08-04
  • 2020-05-19
  • 1970-01-01
  • 2011-11-18
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
相关资源
最近更新 更多