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);
    }
}
 

 

posted @ 2019-03-21 16:57  peifengyang  阅读(581)  评论(0编辑  收藏  举报