1. 程式人生 > >FC 13.1 全域性獲取Context

FC 13.1 全域性獲取Context

在很多地方需要用到Context,彈出Toast、啟動活動、傳送廣播、使用通知等。

活動本身就是一個Context物件,但是很多情況下邏輯程式碼將脫離Activity類,但又需要Context,這時我們就需要一個解決方案來解決這個問題了。

Android提供了一個Application類,每當應用程式啟動的時候,系統就會自動將這個類進行初始化。我們可以定製一個自己的Application類,以便於管理程式內一些全域性的狀態資訊,比如說全域性Context。

  • 建立一個MyApplication類
    • 建立一個MyApplication類extends自Application。 
    • 重寫父類的onCreat()方法,通過呼叫getApplicationContext()方法得到一個應用程式級別的Context
    • 提供getContext方法,將獲取的Context進行返回
  • 修改AndroidManifest.xml
    • 在AndroidManifest.xml檔案的 < application>標籤下進行指定初始化MyApplication類。此處一定要加上完整的包名,不然系統無法找到這個類。
public class MyApplication extends Application {
    private static Context context;
    @Override
    public void onCreate() {
        context = getApplicationContext();
    }
    public static Context getContext() {
        return context;
    }
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="firstcode.zs.com.fc_13_1">
    <application
        android:name="firstcode.zs.com.fc_13_1.MyApplication"
    ...
    </application>
</manifest>

有了這個類,在使用的時候就可以這樣了

Toast.makeText(MyApplication.getContext(), "", Toast.LENGTH_SHORT).show();