【问题标题】:Android detect activity resume via HOME or BACK keysAndroid 通过 HOME 或 BACK 键检测活动恢复
【发布时间】:2014-04-15 16:08:08
【问题描述】:

我已将我的应用程序设为 HOME 应用程序,因此当您按下 HOME 按钮时,您将被重定向到我的应用程序。从我的应用程序中,您可以打开其他应用程序,例如浏览器,然后通过按 BACK 或 HOME 键返回到我的应用程序。 现在的问题是我需要知道用户何时使用 HOME 以及何时使用 BACK 键返回。 我尝试打印 Intent 信息,但在两种情况下似乎都相同。

编辑 我正在使用 getIntent() 在 onResume 中检查意图。在覆盖 onNewIntent 方法之后,当用户使用 HOME 按钮返回时,我现在在那里获得不同的意图,但是当按下 BACK 时不会调用此方法。是否可以安全地假设,如果调用带有 android.intent.category.HOME 的 onNewIntent,则用户使用 HOME 按钮返回,否则使用 BACK 按钮返回?

【问题讨论】:

  • 我认为 Intents 必须是不同的标志
  • 我在活动中使用 getIntent(),但我认为在这两种情况下数据相同是正常的,因为在这两种情况下,我的应用程序都刚刚恢复并且 getIntent() 返回的意图可能是与最初创建我的应用程序相同。
  • 你能用getAction()函数看看Intent的动作吗?数据相同,但操作可能不同。
  • getAction() 和 getCategories() 返回相同的结果。动作:android.intent.action.MAIN,类别:android.intent.category.Launcher

标签: android


【解决方案1】:

onNewIntent() 在应用程序运行时触发,并接收另一个要启动的意图。这就是为什么您在按下 HOME 时会看到它。

按下 BACK 后,您的应用将不会收到意图。所发生的一切就是删除了您上面的应用程序。因此,您的应用会从后台堆栈中显示出来,并且只调用了 onResume()

这就是你的判断方式。


出于兴趣,您可以在线查看旧启动器的源代码,您会看到 onNewIntent() 用于将启动器视图重新居中在主页上,即它可以帮助您查看 HOME键已按下两次。

几个月前(2013 年底)我正在探索这个确切的主题,并且查看生产启动器代码确实很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多