在编写含有Fragment代码的时候,经常会遇到这种情况,假如app长时间在后台运行,再点击进入会crash,而且fragment页面有重叠的现象。

 如果系统内存不足、或者切换横竖屏、或者app长时间在后台运行,Activity都可能会被系统回收,然后Fragment并不会随着Activity的回收而被回收,从而导致,Fragment丢失对应的Activity。

这里,假设我们我们含有一个MainActivity里面包含了一个FramentA。

app发生的变化为:app长时间在后台运行,由于某种原因系统回收MainActivity——FragmentA被保存状态未被回收——再次点击app进入——首先加载的是未被回收的FragmentA的页面——由于MainActivity被回收,系统会重启MainActivity,FragmentA也会被再次加载——页面出现混乱,因为一层未回收的FragmentA覆盖在其上面——(假如FragmentA使用到了getActivity()方法)会报空指针,出现crash。

这种情况下,我们可以这样解决:

MainActivity重写onSaveInstanceState方法,将super.onSaveInstanceState(outState);注释掉,让其不再保存Fragment的状态,达到其随着MainActivity一起被回收的效果!

最新文章

  1. C# WCF服务端搭建和客户端调用
  2. Overview of the Oppia codebase(Oppia代码库总览)
  3. 用canvas开发H5游戏小记
  4. X264库直接压缩BITMAP格式数据
  5. jquery的offset与position的区别
  6. nRF51822之app_button控制uart的开启和关闭
  7. C#对Excel打印时,PageSetup 对象详解
  8. WCF之各种WCF引用方式
  9. Linux screen命令简介
  10. 解决SMARTFORMS 中table 控件单行跨页的问题
  11. elasticsearch的rest搜索---对于相关度的大牛的文档
  12. Java中 +=是什么意思 什么情况下用
  13. Unity 游戏框架搭建 (三) MonoBehaviour单例的模板
  14. MySQL查询1
  15. [LeetCode] Score After Flipping Matrix 翻转矩阵后的分数
  16. 利用redis 漏洞入侵挖矿临时解决办法
  17. CSRF与SSRF区别
  18. 《Javascript高级程序设计》第六章笔记整理
  19. $resource详解
  20. 为iOS应用制作一个二维码

热门文章

  1. vba调用c#dll
  2. 神策Loagent数据收集 windows部署的坑
  3. windows server 2016安装docker
  4. java调用存储过程、存储函数
  5. 关于Oracle中的字符的比较
  6. IntelliJ IDEA使用心得之非Maven项目篇
  7. k折交叉验证
  8. 关于around_filter 的调用
  9. CUBA 7 新特性 (下篇)
  10. c#socket TCP同步网络通信