activity在后台被杀死后恢复,fragment空指针导致崩溃的问题

出现原因

​ 在activity被回收后恢复时,activity被重新实例化了,但是附属在该activity中的fragment并没有被销毁,在activity的onSaveInstanceState里会将fragment的状态保存起来,当activity重新创建时,其中的fragment还是之前的,而父activity已经被回收了,此时调用getActivity会返回null导致崩溃。

解决方法

​ 只需要在fragmentactivity被系统回收的时候不保存fragment的状态即可,即重写fragmentactivity的onSaveInstanceState并注释掉super.onSaveInstanceState方法,代码如下:

@SuppressLint("MissingSuperCall")
@Override
protected void onSaveInstanceState(@NotNull Bundle outState) {
// super.onSaveInstanceState(outState);
}