博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Activity被回收导致fragment的getActivity为null的解决办法
阅读量:6903 次
发布时间:2019-06-27

本文共 678 字,大约阅读时间需要 2 分钟。

hot3.png

    这两天一直被这个问题困扰,假如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一起被回收的效果!

转载于:https://my.oschina.net/u/1011854/blog/469138

你可能感兴趣的文章
《Ansible权威指南》一1.8 Python多环境扩展管理
查看>>
《全栈性能测试修炼宝典 JMeter实战》—第1章 1.5节从招聘要求看岗位价值
查看>>
Gartner2017年十大技术趋势
查看>>
sum() 函数性能堪忧,列表降维有何良方?
查看>>
fastreport 导出图片并打印
查看>>
学习html我们从百度百科开始
查看>>
如何Spring Cloud Zuul作为网关的分布式系统中整合Swagger文档在同一个页面上
查看>>
实现一个炫酷的随机标签排列效果(颜色随机,大小随机,成菱形排列的列表)...
查看>>
flex 布局
查看>>
数字资产交易所开发:平台币快速吸金的背后
查看>>
小程序自定义音频组件,带滚动条,IOS循环失效问题
查看>>
Swift开发之粒子动画的实现
查看>>
我学Java我傲娇
查看>>
挖矿蠕虫肆虐,详解云防火墙如何轻松“制敌”
查看>>
Linux -- Samba之客户端访问(Linux和windows)
查看>>
八个Docker的真实应用场景
查看>>
vpc的使用方法
查看>>
GitExtensions GitCredentialWinStore syntax error near unexpected token `('
查看>>
Java获取EXE文件图标的方法
查看>>
“驱动程序在 \Device\Harddisk0\D 上检测到控制器错误”的根本解决办法!
查看>>