gpt4 book ai didi

android - 检测应用程序何时启动或从最近的应用程序打开

转载 作者:搜寻专家 更新时间:2023-11-01 07:49:35 25 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,我想在打开时模拟官方 Google Plus 应用程序的相同行为,即:

  • 如果该应用程序仍在“最近使用的应用程序”列表中并且您打开它(从图标或最近使用的应用程序,这无关紧要),您将从您离开的地方恢复该应用程序。
  • 如果该应用程序不再出现在“最近使用的应用程序”列表中并且您打开它,您将看到启动画面,然后被定向到主页。

我的应用程序有一个使用抽屉导航和多个 fragment 作为页面的 Activity 。我的目标是保留当前 fragment 并在应用程序从最近的应用程序恢复时显示它。我可以使用 SharedPreferences 存储当前 fragment 的标记并在用户重新打开应用程序时加载它来设法做到这一点。解决方案的问题是此类数据是持久性的,因此即使用户先从“最近的应用程序”列表中删除应用程序并重新打开它,用户也总是会看到最后一页。

那么如何检测该应用程序是否已经在最近的应用程序列表中呢?或者是否有任何方法在从该列表中删除应用程序时调用,以便我可以从 SharedPreferences 中清除最后一个 fragment 标记?还是我使用了错误的方法?

感谢您耐心阅读。

最佳答案

当您通过最近任务列表返回到您的应用时,存在三种可能性:

  1. 已经过了很长时间,超过 30 分钟,您的进程没有运行。在这种情况下,Android 会像用户点击主屏幕启动器图标一样启动您的应用程序。您不会获得已保存的实例状态,因为它被认为是陈旧的。

  2. 时间不长,因此 Android 希望用户认为您的应用自从他们离开后就一直在运行。但是,由于内存压力,Android 在后台终止了您的进程。在这种情况下,Android 会为您创建一个新进程,创建您的 Activity 实例,并在 onCreate() 中将保存的实例状态 Bundle 传递给您onRestoreInstanceState()

  3. 您的进程已经在运行。在这种情况下,您的 Activity 将回到前台。您不需要实例状态,因为您的 Activity 实例仍在运行。 Android 没有触及您的小部件,因此如果您的 UI 不是您想要的样子,那是您自己的错,因为您做了一些事情(例如,在 onPause() onStop()) 搞砸了你的 UI。根据您的描述,我认为您正在测试这种情况,在这种情况下,不会调用 onRestoreInstanceState(),因为不需要它。

因此,只要您不搞砸自己的 UI,您的应用程序就会像您为 Google Plus 描述的那样工作,只要您处理上面场景 #2 的已保存实例状态。

在 Android 5.0+ 上,PersistableBundle 中绑定(bind)了一些相关场景,您可以将它们与 onSaveInstanceState() 和 kin 的变体一起使用。我没有经常使用 PersistableBundle,所以我没有任何与之相关的特别建议。

关于android - 检测应用程序何时启动或从最近的应用程序打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36946240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com