FC 13.1 全域性獲取Context
阿新 • • 發佈:2018-11-26
在很多地方需要用到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();