保存Android应用程序状态

时间:2010-01-11 17:37:28

标签: java android

我理解如何使用SharedPreferences,onSavedInstanceState()&来保存应用程序的状态。 onRestoreInstanceState()等在类似帖子(Saving Android Activity state using Save Instance State)中概述,但如何保存上一个活动?

更具体地说,我的应用程序启动并进入登录屏幕。一旦用户登录并浏览了几个活动,就可以说他或她使用主页按钮或以其他方式离开应用程序。下次用户启动应用程序时,它将返回登录屏幕并再次登录。相反,我希望应用程序启动并转到用户在上一个会话中离开应用程序时在堆栈顶部的最后一个活动。

最后一项活动是如何保存的,以便在应用启动时恢复?

3 个答案:

答案 0 :(得分:2)

我相信Android会自动执行此操作。我们正在开发一款应用。当我点击主页按钮然后他们回到应用程序时,它会从我离开的活动开始。我们还没有编写任何代码来实现这一目标。它似乎工作。

答案 1 :(得分:2)

我的同事写了一篇关于Android应用程序状态的文章,其中包括getLastNonConfigurationInstance()的详细信息,该文件检索上次存储的实例。看看这里:http://www.eigo.co.uk/Managing-State-in-an-Android-Activity.aspx

答案 2 :(得分:1)

请注意,上述答案仅在一种情况下是正确的:如果你的进程没有被android杀死,因为出于不同的原因需要资源(内存,......)。

为了得到你描述的内容,我会编写一个自定义父活动并覆盖正确的生命周期方法来存储你的应用程序状态并阅读它并采取相应的行动。然后让你的所有活动都继承自MyActivity(而不是android.app.Activity)


public MyActivity extends android.app.Activity {
...
@Override
public onCreate(...) {
  // Read the Application state, 
  // check if the currently launching Activity is the right one, 
  // if not, start the last Activity and finish the current one.
}

@Override
public onDestroy(...) {
  // Store the current Activity ID in the SharedPreferences
}
...
}

请注意调用所有Activites中的super.onDestroy和super.onCreate方法(就像你应该做的那样)。

快乐编码并享受Android的乐趣!