WEB开发网
开发学院手机开发Android 开发 Android 保存Activity的状态 阅读

Android 保存Activity的状态

 2010-05-31 14:41:00 来源:WEB开发网   
核心提示:如果一个会话期间,应用程序被迫重启,Android 保存Activity的状态(2),那么,保存的Bundle会传入到onRestoreInstanceState和onCreate方法中,使用第1步中创建的键,存储实例的值,下面的片段显示了如何从Bundle中提取值来更新Activity实例的状态:@Overridep

如果一个会话期间,应用程序被迫重启,那么,保存的Bundle会传入到onRestoreInstanceState和onCreate方法中。下面的片段显示了如何从Bundle中提取值来更新Activity实例的状态:

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.main);

TextView myTextView = (TextView)findViewById(R.id.myTextView);

String text = “”;

if (icicle != null && icicle.containsKey(TEXTVIEW_STATE_KEY))

text = icicle.getString(TEXTVIEW_STATE_KEY);

myTextView.setText(text);

}

有一点很重要的是,记住onSaveInstanceState仅在Activity变成非Active状态时调用,但不在调用finish来关闭它或用户按下Back按钮时调用。

保存To-Do List Activity的状态

目前,每一次To-Do List例子程序重新启动时,所有的to-do项都丢失了且任何在文本输入框中输入的文字也被清除了。在这个例子中,你将在会话期间保存To-Do List程序的状态。

ToDoList Activity中的实例状态由三个变量组成:

? 是否一个新的Item正在添加?

? 在新的项目输入框中存在什么样的文字?

? 哪个是当前选择的项目?

使用Activity默认的Shared Preference,你可以保存这些值,当Activity重启时更新UI。

在本章的后面,你将学习如何使用SQLite去保存to-do项目。这个例子是第一步,演示如何通过保持Activity实例的细节来确保无瑕疵的体验。

1. 添加静态的字符串用作Preference的键。

private static final String TEXT_ENTRY_KEY = “TEXT_ENTRY_KEY”;

private static final String ADDING_ITEM_KEY = “ADDING_ITEM_KEY”;

private static final String SELECTED_INDEX_KEY = “SELECTED_INDEX_KEY”;

2. 接下来,重写onPause方法。获得Activity的私有Shared Preference并得到它的Editor对象。

使用第1步中创建的键,存储实例的值,包括是否一个新的项目正在添加和任何在“new item”输入框中的文本。

@Override

protected void onPause(){

super.onPause();

// Get the activity preferences object.

Tags:Android 保存 Activity

编辑录入:coldstar [复制链接] [打 印]
赞助商链接