1. 程式人生 > >Android自定義Application

Android自定義Application

自定義Application用途

1、為得到一個Application物件提供便捷。

2、封裝一些通用操作。

3、初始化一些全域性的變數資料。

對於前兩點,官方不建議這樣做,國灰使用一個單例模式同樣可以做到。但是自定義Application沒有任何副作用。而在Applicationr onCreate()方法裡去初始化各種全域性的變數資料是一種比較推薦的做法。

實戰

1、新建一個Application類,並讓它繼承Application

public class MyApplication extends Application{
    private static Context mContext;

    @Override
    public void onCreate() {
        super.onCreate();
        mContext = getApplicationContext();
    }

    public static Context getInstance() {
        return mContext;
    }
}

2、在AndroidManifest檔案中指定自定義的Application

<application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

指定完成後,當我們的程式啟動時Android系統會建立一個MyApplication的例項,如果這裡不指定的和話就會預設建立一個Application的例項。

3、初始化資料的時機

我們不能夠在自定義的Application類的構造方法裡初始化一些需要Context引用操作得到的資料,這樣會報空指標錯誤。因為我們知道,所有Context的方法都是呼叫mBase物件的同名方法,而mBase是attachBaseContext方法後被賦值。我們應該在onCreate()方法中初始化。

4、不要採用單例模式

Application全域性只有一個,它本身就已經是單例了,無需再用單例模式。