Android 保存Activity的状态
2010-05-31 14:41:00 来源:WEB开发网如果一个会话期间,应用程序被迫重启,那么,保存的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.
更多精彩
赞助商链接