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

Android 保存Activity的状态

 2010-05-31 14:41:00 来源:WEB开发网   
核心提示:如果你想保存Activity的信息(例如,类实例的变量)而又不需要和其它的组件共享的话,Android 保存Activity的状态,你可以调用Activity的getPreferences方法,不用指定一个Preference的名字,但仅在它不是显式地结束(即异常结束),因此,对返回的Shared Preference

如果你想保存Activity的信息(例如,类实例的变量)而又不需要和其它的组件共享的话,你可以调用Activity的getPreferences方法,不用指定一个Preference的名字。对返回的Shared Preference的访问只限于调用的Activity;每个Activity支持一个不命名的Shared Preference对象。

下面的框架代码显示了如何使用Activity的私有Shared Preference:

protected void saveActivityPreferences()

{

// Create or retrieve the activity preferences object.

SharedPreferences activityPreferences = getPreferences(Activity.MODE_PRIVATE);

// Retrieve an editor to modify the shared preferences.

SharedPreferences.Editor editor = activityPreferences.edit();

// Retrieve the View

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

// Store new primitive types in the shared preferences object.

editor.putString(“currentTextValue”, myTextView.getText().toString());

// Commit changes.

editor.commit();

}

保存和恢复实例状态

对于保存Activity实例的变量来说,Android提供了一种替代Shared Preference的特殊方法。

通过重写Activity的onSaveInstanceState事件处理函数,你可以使用它的Bundle参数来保存实例的值。保存数据的方法还是使用与在Shared Preference中相同的get和put方法。在完成Bundle的修改后,将其传入父类的处理函数中,如下面的代码片段所示:

private static final String TEXTVIEW_STATE_KEY = “TEXTVIEW_STATE_KEY”;

@Override

public void onSaveInstanceState(Bundle outState) {

// Retrieve the View

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

// Save its state

outState.putString(TEXTVIEW_STATE_KEY,

myTextView.getText().toString());

super.onSaveInstanceState(outState);

}

这个处理函数会在Activity的Active生命周期结束时触发,但仅在它不是显式地结束(即异常结束)。因此,它一般用于确保在单个用户会话中的Active生命周期间Activity状态的一致性。

1 2 3  下一页

Tags:Android 保存 Activity

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