【问题标题】:Android resume app from recent applications list从最近的应用程序列表中恢复 Android 应用程序
【发布时间】:2013-04-26 16:29:02
【问题描述】:

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

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

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

【问题讨论】:

  • 请发布您遇到的错误。
  • 你是对的。这两件事做的完全一样。你看到的是别的东西。可能你看到了这个讨厌的错误:stackoverflow.com/a/16447508/769265
  • @akhalsa,长按 KitKat 4.4.2 (API 19) 上的主页按钮会在我的设备上打开 Google Now。我陷入了与您类似的情况,您能否澄清一下“从正常的应用程序列表中恢复应用程序”的意思?你指的是导航Settings -> Apps吗?谢谢!

标签: android android-recents


【解决方案1】:

确切的答案在某种程度上取决于您的主屏幕启动器应用程序的实现。但是,从我目前的经历来看,我很确定......

  1. ...从您的菜单或主屏幕启动的应用程序通常由Intent 启动。更准确地说:活动启动器在其菜单中显示所有具有动作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. ... 查看recent tasks,据我所知,这与它的工作方式不同:任务列表很可能依赖于getRecentTasks() 创建的列表并将所选应用程序置于前面。这可以通过使用moveTaskToFront() 来完成。仅当应用程序/活动已完成时,它才会新创建(尝试终止应用程序,您会看到它被重新创建)。

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

注意:一个应用程序包可能包含多个应用程序。 ContactsPhone 应用程序在许多情况下只是一个提供的应用程序包(即 APK 文件)中的两个不同活动。

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

【讨论】:

  • 这个答案是错误的。如果您的应用程序正在后台运行并且您返回主屏幕,然后通过按下其启动器图标再次启动该应用程序,它将简单地将现有任务从后台移动到前台,而无需调用onCreate()。这与您从最近任务列表返回应用程序的行为完全相同。这是同样的事情。没有区别。
  • @David:不幸的是,两者之间存在差异——我面临与 akhalsa 相同的问题。你对此有何解释?不要只是说它是错误的——它已经发生了——真的;)
  • 您看到的可能是这个讨厌的 Android 错误:stackoverflow.com/a/16447508/769265 如果您从 IDE(Eclipse、IntelliJ)或直接从 Android 安装程序(单击安装后的“打开”按钮)。如果应用程序是这样启动的,并且您按下 HOME 键,然后从 HOME 屏幕再次启动该应用程序,Android 会错误地创建您的根 Activity 的另一个实例。这是一个安卓错误。它不应该这样工作,事实上,如果你最初从主屏幕启动应用程序,它就不会这样工作。
  • 但是,在花了数年时间研究这个并阅读了 Android 源代码之后,我可以向你保证(除了这个已知的错误),没有任何区别。
猜你喜欢
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多