1.1 介绍Android应用的class
继承Application类并编写自己的实现,你需要做三件事
1、维护application状态
2、在application组件间传递对象
3、通过几个application组件管理和维护资源
当你Application的实现在manifest中注册了,当你application进程创建的时候,他就会被初始化。你的Application实现是一个单例模式,并且你应该提供访问他和成员变量的方法。
1.1.1 继承和使用Application class
图Listing3-7展示了一个继承了Application的单例的实现骨架:
图 Listing 3-7
一旦被创建了,你必须在manifest中的<application>节点注册你的新Application 类,如下代码所示:
<application android:icon="@drawable/icon"
android:name="MyApplication">
[... Manifest nodes ...]
</application>
你的Application实现将会在application开始的时候被初始化。在application组件中可以创建访问新的状态变量和全局资源。
MyObject value = MyApplication.getInstance().getGlobalStateValue();
MyApplication.getInstance().setGlobalStateValue(value);
这是一个在松耦合组件间传递对象,特别有效的方法,或者用来维护application的状态或者用来共享资源
1.1.2 覆盖Application生命周期事件
Application类也为application创建、终止、低内存、配置改变等状态提供事件处理方法。
通过覆盖这些方法,你可以为下边的情况实现自己特定的应用行为。
· onCreate:当应用创建时候被调用。通过覆盖这个方法可以去初始化应用的单例并且可以初始化应用的状态,共享资源。
· onTerminate:当应用对象被终止的时候调用。注意这个方法不保证会被调用。当应用被系统的内核程序因为释放资源给终止了,那么在应用对象终止的时候就不会调用这个方法。
· onLowMemory:为系统应用程序表现良好提供了更多内存,当系统内存较低的时候使用。这个一般会在后台应用已经被终止了,但是当前的前端应用还是在较低内存下运行时候被调用。可以覆盖这个方法去清除缓存或者释放不需要的资源。
· onConfigurationChanged:不像Activities,你的应用对象在配置改变的时候不会被killed或者重启。覆盖这个处理方法可以去处理应用级别的配置改变。
如图Listing 3-8所示,你必须在覆盖父类的方法中调用父类的事件处理。
图 Listing 3-8