如果从App Manager首先运行应用程序,为什么Android在按Home键后不会保留应用程序状态?

时间:2011-07-08 16:54:23

标签: android operating-system install

  • 重现问题的步骤。

    1. 使用多项活动创建或下载任何应用程序。
    2. 将apk文件加载到SD卡或从市场安装。
    3. 使用标准App Manager安装appliaction。
    4. 在App Manager中安装后,按下打开或按下下载后的通知消息。
    5. 运行应用程序后,转到下一个(第二个)应用程序屏幕。
    6. 按HOME。
    7. 按应用程序图标。
  • 发生了什么事。

Appliaction正在从第一个屏幕重新开始,并且不会保留第二个屏幕。 应用程序重启后,或者在应用程序中按BACK按钮返回主屏幕时,应用程序会以正常方式保留活动。

  • 应该是正确的行为。

申请必须始终以正常方式保留活动。

如何为我的应用程序解决此问题? 我可以在首次运行期间重新启动应用程序吗?

2 个答案:

答案 0 :(得分:1)

取决于清单文件中应用程序的定义方式以及是否有任何保存和恢复其状态的机制....

根据您的步骤,它可能会创建同一应用程序的多个实例(请检查this

或者它没有在onCreate

中使用Bunble实例

对于所有应用程序来说,当它被暂停或销毁时(某些应用程序不想要这样,请考虑您的银行帐户管理......),所有应用程序都不会自动返回到保存屏幕。 p>

修改

因此,如果我从您的评论中正确理解,它会按照您使用BACK键退出应用程序时的预期工作,但不会在您使用HOME键时...

阅读我发布的链接:http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

您将理解,当您按HOME键时,您所在应用程序的实例不会被销毁(因此不会保存当前状态)。再次启动它只会启动另一个实例(从初始屏幕开始)。

  

当用户按下BACK键时   当前的活动被破坏了   之前的活动恢复。

...

  

任务是一个有凝聚力的单位   用户转移到“背景”   开始新任务或去家   屏幕,通过HOME键

如果您想改变其行为方式,请查看清单中的launchMode

答案 1 :(得分:0)

我认为App Manager以错误的方式运行我的应用程序。它在其任务中运行我的应用程序。当我按HOME并按应用程序图标时,我用我的应用程序运行第二个任务。

我测试了它。我做了两个应用程序App1,App2。 App2有两个活动A和B. App1以最简单的方式运行App2。

Intent intent = new Intent(Intent.ACTION_RUN);
intent.setComponent(new ComponentName("org.app2.test", "org.app2.test.Screen1"));

测试1.运行App1。 App1运行App2活动A.意图A运行活动B. 按主页。按App2图标。您可以看到App2活动A.

我改变了启动App2的代码。

Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(new ComponentName("org.app2.test", "org.app2.test.Screen1"));

测试2.运行App1。 App1运行App2活动A.意图A运行活动B. 按主页。按App2图标。您可以看到App2活动B.