当点击home键或程序运行过程中突然来电话等意外情况或屏幕方向改变时,会调用onSaveInstanceState()方法进行保存数据到手机硬盘上,再次运行Activity时则调用onRestoreInstanceState()方法从硬盘中取出以保存的数据。也可从onCreate()方法中的bundle对象中取数据:
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- txt=(EditText)findViewById(R.id.txt);
- if (null!=savedInstanceState&&savedInstanceState.containsKey(CONTENT))
- {
- txt.setText(savedInstanceState.getString(CONTENT));
- }
- secondBtn=(Button)findViewById(R.id.secondBtn);
- secondBtn.setOnClickListener(listener);
- Log.i(TAG, "MainActivity-->onCreate");
- }
- public class PreferencesActivity extends Activity {
- private String name;
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- name = savedInstanceState.getString("name"); //被重新创建后恢复缓存的数据
- super.onRestoreInstanceState(savedInstanceState);
- }
- protected void onSaveInstanceState(Bundle outState) {
- outState.putString("name", "liming");//被摧毁前缓存一些数据
- super.onSaveInstanceState(outState);
- }
- }
当Activity重新创建时,会先执行onCreate()方法,再执行onRestoreInstanceState()方法,也可以在onCreate()方法中取数据
②使用Activity默认的Shared Preference,也可以保存数据。
如果需要单击返回按钮退出程序后,下次进入仍然可以保留数据,可以在onPause()方法中设置共享参数,实际是将数据保存在系统的xml文件中
- protected void onPause(){
- super.onPause();
- //SharedPreferences uiState = getPreferences(0);
- //SharedPreferences.Editor editor = uiState.edit();
- //editor.putString(TEXT_ENTRY_KEY, myEditText.getText().toString());
- //editor.putBoolean(ADDING_ITEM_KEY, addingNew);
- //editor.commit();// Commit the preferences.
- //或:
- this.getPreferences(MODE_PRIVATE).edit().putString(TEXT_ENTRY_KEY, myEditText.getText().toString());
- }
在onResume()方法中取数据
- protected void onResume(){
- super.onResume();
- this.getPreferences(MODE_PRIVATE).edit().getString(TEXT_ENTRY_KEY,…………
- }