Android中活动被回收了怎么办

Posted NoBugAnymore

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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从放弃到坚持放弃第二课(下)

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

OSS android 断点续传,不知道怎么上传文件写入内存,没有被回收掉

Android 管理多个fragment(处理Activity被回收的情况)

Android 当打开“开发人员模式”中的“不保留活动”后,程序应当怎么保持正常执行

使用firebase将数据回收器适配器传递给其他活动