Android中活动被回收了怎么办

Posted peifengyang-----做你喜欢做的事情,任何时候都

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中活动被回收了怎么办相关的知识,希望对你有一定的参考价值。

当一个活动进入到了停止状态,是有可能被系统回收的。按下返回键的时候,活动被重新创建一次,但是里面的数据就没办法重现:

这时Activity中提供了一个onSaveInstanceState()回调方法,保证在活动被回收之前一定会被调用。

onSaveInstanceState()方法会携带一个Bundle类型的参数,Bundle提供了一系列的方法用于保存数据,如putString(),putInt()。

//活动被回收后数据的保存操作方法
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
String tempData = "Something you just typed";
outState.putString("data_key",tempData);
}


其实onCreate()方法也有一个Bundle类型的参数,一般情况下为null,但是如果活动被系统回收之前有onSaveInstanceState()方法,这个参数就会保存之前活动的数据内容
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG,"onCreate");
setContentView(R.layout.activity_main);
//活动被回收后,再次创建时数据的恢复
if (savedInstanceState!=null){
String tempData = savedInstanceState.getString("data_key");
Log.d(TAG,tempData);
}
}

 

以上是关于Android中活动被回收了怎么办的主要内容,如果未能解决你的问题,请参考以下文章

回收站视图未显示在片段中

当活动被破坏但我必须继续执行片段中的代码时该怎么办?

一旦单击带有 in 片段的回收器列表项,如何将片段意向活动,以及如何获取回收器项目值?

Android防止活动被回收而丢失数据

是否可以在 OnStop() 回收所有数据并使用保留片段?

将值从回收器适配器传递到android中的片段