每次应用程序运行时,应用程序的Application类都保持实例化状态,配置改变不会导致Application重启。通过扩展Application类可以完成如下3项工作:
1、对Android运行时广播的应用程序级消息(如低内存)做出响应。
2、在应用程序各组件之间传递对象。
3、管理和维护多个应用程序组件使用的资源。
一、自定义Application类
自定义的Application类需要继承android.app.Application类。Manifest文件中默认都注册了一个Application(manifest节点下的application),这个Application的实现在未指定的情况下指的是android.app.Application,可以通过application节点的android:name属性显式指定自定义的Application。
在Manifest文件中注册了自定义的Application之后,他将会在创建应用程序进程时得到实例化。由于“在应用程序各组件之间传递对象”和“管理和维护多个应用程序组件使用的资源”这两项工作显然需要再单例模式下完成,因此Application的实现应该是单例的(约定好的实现是提供一个静态的getInstance方法返回单例实例)。
二、重写应用程序的生命周期事件
自定义Application类的意义就在于可以按照实际需要重写应用程序的生命周期时间而不是一切按照默认办事。
重要的应用程序的生命周期事件有:
onCreate:在创建应用程序时调用
onLowMemory:当系统处于资源匮乏时调用
onTrimMemory:在android4.0中引入,在运行时决定削减当前应用程序的内存开销时调用
onConfigurationChanged:在配置改变时调用