Android中活动被回收了怎么办
应用中有一个活动A,用户在活动A的基础上启动了活动B,活动A就进入了停止状态,这时由于系统内存不足,将活动A回收掉,然后用户按back键返回到活动A会出现什么情况?
A还是会正常显示只不过并不会执行Restart()方法而是执行活动A的onCreate()方法,活动A在这种情况下会被重新创建一次。
那么问题来了:若A中可能存在临时的数据和状态,如:A中文本框中,你输入了一段文字,然后启动了B而A的内存被收回,点击back回到A中由于A被重新创建文本框中所有东西都没了,这样会影响用户体验。
解决办法:使用onSaveInstanceState()回调方法,这个方法可以保证活动被回收之前一定会被调用,因此可以用此方法解决活动被回收时临时的数据得不到保存的问题。
在MainActivity中添加onSaveInstanceState()方法将临时苏剧进行保存
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
String tempData="hello how are you?";
outState.putString("data_key",tempData);
}
在onCreate() 方法中也有一个Bundle参数;9-63+
故我们可以这样写
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState !=null){
String tempData= savedInstanceState.getString("data_key");
}
}