看过很多源码,喜欢继承一个Application,然后在里面进行一些初始化的操作和赋一些全局变量值。这样确实很好,在应用启动的时候就做一些需要的操作,但是今天在我们的项目中发现这样一个问题。
现在很多应用比如360手机助手、腾讯手机管家等应用,会在桌面有个透明的悬浮窗,显示当前系统的应用内存使用数量,我也用360手机助手,每次看到超过50%的时候,我也会点击一下,清除不再使用的应用程序,这个时候,360会把你应用的缓存清除掉,但是内存中的数据仍然还在,这样的话有个问题就是:如果我有个全局变量放在application中,那么当你点击清理的时候,application中的变量值就会变没了,如果是int,long会变成默认值,string会变成null,当你进入你的应用继续使用这个变量值得话,就会出现问题,可能是NullPointer的崩溃错误或者其它错误。我想了想,我认为当360清除你的缓存的时候,会把Application级别的东西给清除掉,比如我放在里面的全局变量,所以,建议不要在application中定义全局变量。开发中遇到的一个问题,记录下来。
不知道上面我的分析是否正确,如果有误请指正。