在我们的应用程序中,很多地方可能用到同一个数据。很多时候我们可能不想通过Intent在Activity之间传递数据或者持久化的存放这些数据。
我们可能会将这些数据存在在Application中,这样我们就可以在所有的Activity中访问了,这个方法简单,但是实际上是错误的。你的程序很可能会因为报空指针错误。



我们在MainActivity中获取Appliction实例,并为name变量赋值,然后跳转到SecondActivity中再去获取name变量的值,并调用大写方法打印出来。
这里有个场景,就是当我们按Home键APP位于后台时,当内存不足时,系统会回收我们的APP。
现在我们模拟一下这个场景后台内存不足杀死APP情况,有多种方式:
adb命令杀死进程,android studio DDMS 的stop process等等方式,我用的是

当我们杀死进程后,再次点击APP图标时

直接报空指针错误了。
原因是:Application对象不会一直在内存中存在,可能被杀掉,不会恢复以前的信息,会创建一个Application对象,然后重新打开之前用户按Home键离开的那个Activity。
网友评论