Activity被回收导致fragment的getActivity为null的解决办法
来源:互联网 发布:诺基亚n86软件下载 编辑:程序博客网 时间:2024/06/05 02:16
这两天一直被这个问题困扰,假如app长时间在后台运行,再点击进入会crash,而且fragment页面有重叠现象,让我十分不爽。研究了一天,终于明白其中的原理并加以解决。解决办法如下:
如果系统内存不足、或者切换横竖屏、或者app长时间在后台运行,Activity都可能会被系统回收,然后Fragment并不会随着Activity的回收而被回收,从而导致,Fragment丢失对应的Activity。
这里,假设我们继承于FragmentActivity的类为MainActivity,其中用到的Fragment为FragmentA。
app发生的变化为:某种原因系统回收MainActivity——FragmentA被保存状态未被回收——再次点击app进入——首先加载的是未被回收的FragmentA的页面——由于MainActivity被回收,系统会重启MainActivity,FragmentA也会被再次加载——页面出现混乱,因为一层未回收的FragmentA覆盖在其上面——(假如FragmentA使用到了getActivity()方法)会报空指针,出现crash。
原理虽然有点绕,但是解决办法很简单:
MainActivity重写onSaveInstanceState方法,将super.onSaveInstanceState(outState);注释掉,让其不再保存Fragment的状态,达到其随着MainActivity一起被回收的效果!
0 0
- Activity被回收导致fragment的getActivity为null的解决办法
- Activity被回收导致fragment的getActivity为null的解决办法
- Activity被回收导致fragment的getActivity为null的解决办法
- Activity被回收导致fragment的getActivity为null的解决办法
- Activity被回收导致fragment的getActivity为null的解决办法
- Activity被回收导致fragment的getActivity为null的解决办法
- Activity被回收导致Fragment的getActivity为null的解决办法
- Activity被回收导致fragment的getActivity为空
- Fragment中调用getActivity为null的解决办法
- Activity 被回收之后,Fragment中 getActivity返回null
- Fragment中getActivity为null的问题
- Fragment的getActivity()为null
- Android中getActivity()为null的解决办法
- Android中getActivity()为null的解决办法
- Fragment的getActivity函数返回为null的异常处理
- 在Fragment之间切换,getActivity()为null的处理
- Fragment中调用getActivity为null的问题
- 关于Fragment中getActivity为Null的问题
- 2016-01-06 diff calculation
- 序章
- cout/printf输出进制控制与位操作
- mac下非常好用的命令行工具 iTerm2
- 遗传算法入门到掌握(二)
- Activity被回收导致fragment的getActivity为null的解决办法
- 【DirectX 9.0学习之路(第三话)】——D3DPRESENT_PARAMETERS 结构参数的详细说明
- SQLiteOpenHelper生词本
- RPC开源框架性能对比
- Java中关键字Volatitle的作用!
- 17. Letter Combinations of a Phone Number
- C语言基础总结-符号的输入输出(常用)
- navigationBar 和 navigationItem 设置 titleView 时的不同
- 时间复杂度和空间复杂度(1)