Android 从最近的应用程序列表中恢复应用程序

标签 android android-recents

我正在尝试修复代码中的错误,希望有人能为我指出正确的方向。如果我的应用程序进入后台,并且用户只需进入“应用程序”并选择我的应用程序即可恢复,一切正常。

但是,如果他们将它置于后台并通过按住主页按钮并从最近的应用程序列表中选择它来恢复它,我会遇到一个错误。我的印象是这两个操作应该做完全相同的事情?

有谁知道从正常的应用程序列表中恢复应用程序与通过按住主页按钮然后从该列表中选择它来恢复应用程序之间的区别是什么?

最佳答案

确切答案在一定程度上取决于您的主屏幕启动器 应用程序的实现。然而,根据我目前的经历,我很确定......

  1. ... 从您的菜单或主屏幕启动的应用程序通常由 Intent 启动。更准确地说: Activity 启动器在其菜单中显示所有具有操作 android.intent.action.MAIN" 和类别 android.intent.category.LAUNCHER 和如果您选择一个应用程序,它会创建一个 Intent 并由此启动该应用程序:

    Intent intent = new Intent(Launcher.context, SelectedActivity.class);
    intent .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    startActivity(intent);
    

    除了一些可能避免这种情况的标志 (android:launchMode="singleTop")

  2. 之外,这很可能会创建您已启动的应用 Activity 的新实例
  3. ... 查看 recent tasks据我所知,这工作方式不同:任务列表很可能依赖于 getRecentTasks() 创建的列表并将选定的应用程序置于最前面。这可以通过使用 moveTaskToFront() 来完成.只有当应用程序/Activity 完成后,它才会被新创建(尝试终止应用程序,您会看到它被重新创建)。

结论:如您所见,最近的任务列表的工作方式类似于 (go) 返回到应用程序,这可能导致 onResume() 而从菜单将导致 onCreate()

注意:一个应用程序包可能包含多个应用程序。在许多情况下,联系人电话 应用只是一个提供的应用程序包(即 APK 文件)中的两个不同 Activity 。

希望这有助于理解不同的行为......干杯!

关于Android 从最近的应用程序列表中恢复应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241108/

相关文章:

java - android中的时间范围搜索栏

android - 在中心设置 ListView 的文本 - android

iphone - phoneGap/钛开发

android - 如何检测应用程序已从 Android Oreo 上的最近(概览屏幕)中删除?

android - 当我的应用程序进入后台时以编程方式从任务列表中删除我的应用程序(API <= 20)

Android 为最近的应用程序使用不同的图标

android - 如何在 Android App 进入后台之前更改 View ?

android - 需要阻止 Android 在失败的 gradle 任务上运行

android - 将 Android Studio 升级到 Arctic Fox 后 Gradle 同步失败

android - 从 sencha 1 迁移到 sencha 2,在 eclipse 中使用 phonegap