重新启动应用程序时无法保留当前活动

时间:2012-09-02 20:06:15

标签: android android-activity android-lifecycle

我有3项活动:活动A,B和C. 活动A是我的登录活动,用户登录到他的帐户, 活动B是仪表板 而活动C有ListView

在Android手机上: 当我在活动C上按我的手机上的主页按钮时,它将我带到主屏幕的电话,而当我再次尝试启动应用程序时,它会将我带到活动A而不是我最初离开的活动C.

在模拟器上: 当我在活动C上按我的手机上的主页按钮时,当我再次尝试启动应用程序时,它会将我带到活动C。

此外,我已在每项活动上设置onResume,以检查活动恢复时手机是否可以访问互联网。 现在的问题是,我不明白为什么即使我没有在手机上获得与模拟器相同的行为。

我希望应用程序从我离开它的活动C开始。我想要与我在模拟器上获得相同的行为。

仿真器上也没有发生错误或崩溃。所以我很难找到问题。

请指导我应该怎么做或请告诉我可能是什么问题。

谢谢!!

3 个答案:

答案 0 :(得分:1)

嗯,这两种行为都很正常。以下是正在发生的事情: 当您从“活动C”按下主页按钮时,OS会将您带到Android主屏幕,然后直到操作系统,以决定是销毁活动还是保留活动(这取决于操作系统需要的资源)。

在模拟器上可能没有或很少有其他活动正在运行,因此操作系统不会破坏“活动C”,当您重新启动应用程序时,它会将您带到“活动C”,它仍然存在。

与模拟器相比,您的设备必须运行大量其他应用程序和服务,并且需要资源才能使它们顺利运行,因此当您退出活动操作系统时会破坏该活动并声明为该应用程序提供的资源。 因此,当您启动应用程序时,它会从启动时重新创建或重新启动应用程序,在您的情况下为“活动A”。

因此,它非常正常,你应该担心它。

有关详细信息,请阅读this

答案 1 :(得分:1)

关于您没有使用Eclipse来启动应用程序 - 我想介绍另一种解决方案。

请查看Manifest中Activity标记的以下键:android:alwaysRetainTaskState http://developer.android.com/guide/topics/manifest/activity-element.html#always

根据文档,它的默认值为false。如果在任务根活动中设置为true(我认为是Launcher) - 它会告诉系统始终保持任务的状态而不重置它。因此,即使进程被终止 - 重新启动后,您应该出现在最新的任务状态。

但是,要小心,因为如果

这种方法将被破坏
  1. 您不会为任务的根目录指定它。
  2. 如果您在应用程序中使用任务操作标志。例如FLAG_ACTIVITY_CLEAR_TASK / FLAG_ACTIVITY_CLEAR_TOP / etc
  3. 祝你好运

答案 2 :(得分:0)

根据您使用的Eclipse ADT插件,手机上的行为可能是错误的,因为您正在从eclipse启动应用程序。 您可以尝试“adb install your_app.apk”并从屏幕手动启动它,它可以解决问题。

通常,您描述的行为是设计行为,因此如果不打断(通过意图标志和清单声明) - 系统应该按照您的意愿行事,恢复最后一个活动及其状态。

祝你好运