当一个Andriod应用启动的时候,系统会自动帮我们创建一个Application,所以一般情况下,我们不需要手动去创建一个Application,那么Application倒底有什么作用呢,接下来,让我们分析一下:
大家都知道 ,在Java中,当一个变量声明为static后,你不用new,可以在应用的任何时候直接使用这个变量,静态变量是不会被垃圾回收的,其对象会一直保持引用,而在Android中,静态变量在安卓上不比其他Java环境,不管变量本身写在哪个类里,它一旦被代表组件的类初始化,比如被一个Activity初始化,它就会绑定在这个Activity类中..关键的地方来了,其他Java环境 这个类一旦被加载,就可以存活到进程结束,因此给我们造成一种错觉就是,静态变量伴随整个进程....而Android的类却可能随着组件的销毁而卸载...这意味着你关闭一个Activity的时候,由这个Activity初始化的静态变量也会被置空,因此它的生命周期是不稳定的。也就是说,在Android中静态变量可能随时被系统置空,变为null,其它地方在使用的时候就会产生空指针现象。
所以,在Android中,应该尽量减少静态变量的使用,并且最好使用一个公共的类,将静态变量统一管理起来。
这时候,我们的Application类便派上用场了。
Application类在源码上总述这样写道:
Base class for those who need to maintain global application state. You can
provide your own implementation by specifying its name in your
AndroidManifest.xml’s <application> tag, which will cause that class
to be instantiated for you when the process for your application/package is
created.
翻译:当我们需要保持全局变量时,使用这个类。
你可以通过自己取的名字,在 AndroidManifest.xml的application标签内声明并区分这个组件。声明后这个类将会在你的应用程序或者包所在的进程创建的时候,被实例化。