Android Application

486 阅读2分钟

1:Application简介

Application是维护应用全局状态的基类。Android系统会在启动应用进程时创建一个Application对象,一个进程有且只有一个Application,一个应用可以有多个进程,也就是说一个应用至少有一个Application。Application对象诞生于其它任何组件对象之前,并且一直存活,直到应用进程结束。

<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activityandroid:name=".MainActivity">
        ...
    </activity>
</application>

2:Application的作用

Application对象全局可访问,且全程陪同应用进程。所以特别适合完成以下任务:

共享全局状态
初始化全应用所需的服务(Application运行在UI线程中)

Application有四个重要的回调方法

onCreate():Application对象创建的时候调用。
onConfigurationChanged():当系统配置发生变更时调用,如:屏幕方向改变,语言改变。
onLowMemory():当内存吃紧的时候调用,我们在此方法里可以释放一些内存。
registerActivityLifecycleCallbacks():调用这个方法来监听Activity的生命周期变化,我们可以通过此方法来判断当前应用是否在前台。

3:自定义Application

我们可以扩展Application类,让Android系统使用我们自定义的Application类来创建Application对象。

3.1:创建Application子类

public class MyApplication extends Application{
    @overide
    protected void onCreate(Bundle saveInstanceState){
        super.onCreate(Bundle saveInstanceState);
    }
}

3.2:添加android:name属性

在清单文件中为application标签添加android:name属性.

<application
    android:name="包名.MyApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activityandroid:name=".MainActivity">
        ...
    </activity>
</application>

我们在实际应用中,大多用静态单例来进行初始化。这样更好维护模块化程度更高(单一职责),也可以懒加载,提高应用的启动速度。