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

Android中活动被回收了怎么办

上一篇:Android活动的4种启动模式


下一篇:移动互联网期末笔记