当Activity在后台销毁的时候,如何保存和恢复状态还有数据。
答案:
a、调用 onSaveInstanceState() 方法保存数据。
b、在 onCreate() 中恢复保存的数据
//调用(a)
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//定义变量的tempData可以设置为文本框
String tempData = "Something you just typed";
outState.putString("data_key",tempData);
}
//调用b
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState != null){
String tempData = savedInstanceState.getString("data_key");
//可以用Log/Toast输出
System.out.println(tempData);
}
}
第二种方法:
将数据存储到参数 “PersistableBundle outPersistentState”上面
-
调用 onSaveInstanceState() 方法保存数据:
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
outState.putString(“state”, textView.getText().toString());
} -
在 onCreate() 中恢复保存的数据:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState != null){
String text = savedInstanceState.getString(“state”);
}
textView = findViewById(R.id.textView);
}