Activity被回收导致被绑定Fragment调用getActivity()抛空指针异常

当系统内存不足,Fragment的宿主Activity被回收的时候,Fragment的实例并没有随之被回收。Activity被系统回收时,会主动调用onSaveInstance()方法来保存视图层(View Hierarchy),所以当Activity再次被重建时,之前被实例化过的Fragment依然存在,而Activity又会创建新的Fragment,综上这些因素导致了多个Fragment重叠在一起。而当之前已经被实例化的Fragment调用getActivity()时就会抛出空指针异常。

解决办法:

重写Activity类中的onSaveInstance()方法,将“super.onSaveInstanceState(outState);”注释掉,让其不再保存Fragment的状态,达到其随着绑定Activity一起被回收的效果。

你可能感兴趣的:(Activity被回收导致被绑定Fragment调用getActivity()抛空指针异常)