我正在尝试修复代码中的错误,希望有人能为我指出正确的方向。如果我的应用程序进入后台,并且用户只需进入“应用程序”并选择我的应用程序即可恢复,一切正常。
但是,如果他们将它置于后台并通过按住主页按钮并从最近的应用程序列表中选择它来恢复它,我会遇到一个错误。我的印象是这两个操作应该做完全相同的事情?
有谁知道从正常的应用程序列表中恢复应用程序与通过按住主页按钮然后从该列表中选择它来恢复应用程序之间的区别是什么?
最佳答案
确切答案在一定程度上取决于您的主屏幕 或启动器 应用程序的实现。然而,根据我目前的经历,我很确定......
... 从您的菜单或主屏幕启动的应用程序通常由
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"
) 之外,这很可能会创建您已启动的应用 Activity 的新实例
... 查看 recent tasks据我所知,这工作方式不同:任务列表很可能依赖于 getRecentTasks() 创建的列表并将选定的应用程序置于最前面。这可以通过使用 moveTaskToFront() 来完成.只有当应用程序/Activity 完成后,它才会被新创建(尝试终止应用程序,您会看到它被重新创建)。
结论:如您所见,最近的任务列表的工作方式类似于 (go) 返回到应用程序,这可能导致 onResume()
而从菜单将导致 onCreate()
。
注意:一个应用程序包可能包含多个应用程序。在许多情况下,联系人 和电话 应用只是一个提供的应用程序包(即 APK 文件)中的两个不同 Activity 。
希望这有助于理解不同的行为......干杯!
关于Android 从最近的应用程序列表中恢复应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241108/