全局变量被回收造成的空指针

1. 假设我们在Application类里面使用静态变量来保存数据,比如:

然后在其他页面直接使用App.userInfoData来获取数据,在某些情况下就会出现空指针异常。

问题是如何发生的,会在什么情况下发生此类问题?

当用户运用手机清理助手或后台回收我们的应用造成我们应用程序进程被杀死的时候就有可能出现这种空指针的问题,下面举个例子我们一起来看看这种情况是如何发生的。

1.假设在Activity1里面里面使用了userInfoData对象,然后从activity1跳转到activity2,再使用下图的方法结束进程:

 然后就空指针了:

 原因分析:

当点击上面那个× 结束进程后,application是会重新走一遍生命周期的,然后重修走一遍onCreat()方法,注意此时的application对象地址是一样的

可参考:

Android-Application被回收引发空指针异常分析(消灭全局变量)

猜你喜欢

转载自www.cnblogs.com/tangs/p/9267381.html