Activity+ViewPager+Fragment 手机管家清理之后异常状况解决

APP框架:Activity+ViewPager+Fragment

条件:手机管家清理之后重新点击应用

状况:应用已停止运行

分析:假如手机没有root,使用第三方手机管家(非系统自带),应用的缓存被清理,重新进入软件时显示的界面是退出时的界面而非从启动页开始,

            被清除的缓存分两种:

           1.变量;2.Fragment

           所以报错也分成2种:

           1.变量:由于变量被清除,导致引用到这个变量的时候判断会出错,导致一系列问题,这个不难解决,只要引用的时候判断一下变量是否有值,没有值重新获取

           2.Fragment:比较容易被忽略的问题就是Fragment缓存被清理掉了,当Activity调用Fragment里的方法时,会报控件空指针,但是同一个方法,Fragment自己调用就没有问题,我也曾经考虑到可能是由于Fragment还没有创建好就调用Fragmernt的方法导致空指针,测试之后发现并不是这个问题。

                                    我认为这应该是类似于野指针的概念,因为手机没有root,所以手机管家清理之后事实上应用并没有被清理干净,手机管家清理之后报空指针是由于控件指向的是之前的Fragment而之前的Fragment已经被清理所以找不到对象。


方法:定义一个static View view,而Fragment自己的布局为View fragmentLayout,当onCreateView中fragmentLayout获取到值之后赋值给view,这样当手机管家清理之后,在Activity调用Fragment中的方法时先判断一下控件是否为null,假如为null,就用view重新初始化一下控件就可以了


好了,就这么多,人人为我,我为人人

                                    

   

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值