感谢这位哥的思路。
这个问题很常见,基本所有app都会遇到这个问题。但是很多开发者都没有处理。
问题的起因:我的app在进入后台后一段时间,可能被系统干掉了,然后通过多任务键,或者图标再点进去操作,出现xxId为null
经过一番探索发现:
app在被系统干掉后,重新进入,是会实例出所有的界面(因为他们都重写了onsaveInstance方法),但是这个界面所有的变量都变为null了(如果没有自己保存的话)。
解决的办法2种
1.每个页面都去重写onsaveInstace方法,去保存数据(对于老项目来说,这个工程量是非常巨大的)(如果是新项目,建议用一个好的框架,统一处理每一个页面变量的存取)
2.比较取巧的办法就是在被干掉重启的时候,重新进入SplashActivity(也就是启动页)。重走一遍流程,数据也就肯定不会出错了(ios系统上,如果出现被系统干掉的情况,也是采用的这种方法)
本文主要就是介绍第二种办法:
原理:
1.在splashActivity的oncreate时候就设置一个全局的变量值。
2.在baseActivity的oncreate中比较这个变量值是否发生变化(app在后台被干掉后重进,该值会变为默认)
3.如果发生了改变,就重进splashActivity,如果没有就正常处理
工具类一个:
/**
* 这个类的作用是保证app进入后台被系统回收之后,再次进入app时重首页进入。
* 配合splashactivity和baseactivity使用