activity状态保存讲解三
2015-02-18 14:06
162 查看
1、当我们正在发短信的时候,已经写了几百字了,这时突然来了一个电话,我们接完电话之后,如果发现辛辛苦苦的几百字不见了,那可就火大了,而实际上这些内容都是保存了的。在我们接电话的过程中,我们发信息的那个Activity是可能会被系统回收的,这时会调用Activity的onSaveInstanceState回调方法,而我们就可以在这个方法中保存状态数据,在onCreate方法或者在2.0之后提供的回调方法onRestoreInstanceState中进行状态数据恢复。
2、当我们在玩游戏的时候,可能又想听歌,然后我们会按home或者back键退出游戏去启动音乐,然后再回到游戏,当我们回到游戏的时候,发现刚刚的状态还是被保存的。这种情况,我们可以这样保存状态。在onPause方法中保存状态数据,在onResume方法中进行状态恢复。
下面和大家分享一下,这两种情况保存状态的实现代码:
主Activity
package com.zyb.state;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;
public class MainActivity extends Activity {
//内容输入框
private EditText content;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
content=(EditText)findViewById(R.id.content);
if(savedInstanceState!=null){
//得到保存的数据
String saveString=savedInstanceState.getString("content");
//恢复数据
content.setText(saveString);
}
}
/**
* 在该方法中保存状态数据
*/
@Override
protected void onPause() {
super.onPause();
//得到要保存的输入框的内容
String saveString=content.getText().toString();
SharedPreferences sp=this.getSharedPreferences("save", Context.MODE_PRIVATE);
//保存输入框的内容
sp.edit().putString("content", saveString).commit();
}
/**
* 在该方法中恢复状态数据
*/
@Override
protected void onResume() {
//得到保存的内容
String saveString=this.getSharedPreferences("save", Context.MODE_PRIVATE).getString("content", null);
//恢复内容
content.setText(saveString);
super.onResume();
}
/**
* 在该方法中保存状态数据
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
//得到要保存的输入框的内容
String saveString=content.getText().toString();
//保存输入框的内容
outState.putString("content", saveString);
super.onSaveInstanceState(outState);
}
}
main.xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
程序运行之后我们在输入框中输入一些内容,然后按back或者home键退出,再次进入程序,上次输入的数据还是保存的。
2、当我们在玩游戏的时候,可能又想听歌,然后我们会按home或者back键退出游戏去启动音乐,然后再回到游戏,当我们回到游戏的时候,发现刚刚的状态还是被保存的。这种情况,我们可以这样保存状态。在onPause方法中保存状态数据,在onResume方法中进行状态恢复。
下面和大家分享一下,这两种情况保存状态的实现代码:
主Activity
package com.zyb.state;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;
public class MainActivity extends Activity {
//内容输入框
private EditText content;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
content=(EditText)findViewById(R.id.content);
if(savedInstanceState!=null){
//得到保存的数据
String saveString=savedInstanceState.getString("content");
//恢复数据
content.setText(saveString);
}
}
/**
* 在该方法中保存状态数据
*/
@Override
protected void onPause() {
super.onPause();
//得到要保存的输入框的内容
String saveString=content.getText().toString();
SharedPreferences sp=this.getSharedPreferences("save", Context.MODE_PRIVATE);
//保存输入框的内容
sp.edit().putString("content", saveString).commit();
}
/**
* 在该方法中恢复状态数据
*/
@Override
protected void onResume() {
//得到保存的内容
String saveString=this.getSharedPreferences("save", Context.MODE_PRIVATE).getString("content", null);
//恢复内容
content.setText(saveString);
super.onResume();
}
/**
* 在该方法中保存状态数据
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
//得到要保存的输入框的内容
String saveString=content.getText().toString();
//保存输入框的内容
outState.putString("content", saveString);
super.onSaveInstanceState(outState);
}
}
main.xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
程序运行之后我们在输入框中输入一些内容,然后按back或者home键退出,再次进入程序,上次输入的数据还是保存的。
相关文章推荐
- activity状态保存实例讲解过程
- activity状态保存讲解一
- activity状态保存讲解2
- activity状态保存讲解四
- android activity的状态保存机制
- 关于activity保存页面状态的两个方法
- Android开发_如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
- activity的数据状态保存:自己的一点经验
- 保存Activity的状态
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- android保存和恢复activity的状态数据
- activity和fragment的保存和恢复状态
- Activity状态的几种保存方法
- 保存Activity的状态
- Activity的生命周期,状态保存,窗口显示,取得返回结果,安全退出
- Activity、Fragment保存和恢复状态的最佳实现
- 关于转屏,与activity状态的保存onRetainNonConfigurationInstance()
- 利用onSaveInstanceState()方法保存Activity状态
- Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)
- android activity详解三:保存activity的状态 .