解决方法如下所示:
public class MyActivity extends Activity {
//在创建活动时调用,恢复临时数据
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
if (savedInstanceState != null) {
String tempData = savedInstanceState.getString("data_key");
}
}
//在活动销毁前调用,保存临时数据
@Override
protected void onSaveInstanceState(Bundle outState) {
String tempData = "Something you just typed";
outState.putString("data_key", tempData);
}
}
Activity中提供了一个onSaveInstanceState()
回调方法,这个方法会保证一定在活动被回收之前调用,因此我们可以通过这个方法来解决活动被回收时临时数据的保存问题。onSaveInstanceState()
方法会携带一个Bundle类型的参数,Bundle提供了一系列的方法用于保存数据。而onCreate()方法中有一个Bundle类型的参数。这个参数在一般情况下都是null,但是当活动被系统回收之前有通过 onSaveInstanceState()
方法来保存数据的话,这个参数就会带有之前所保存的全部数据,只需要再通过相应的取值方法将数据取出即可。