Android應用全域性獲取Context的技巧
阿新 • • 發佈:2019-02-14
———————-歡迎轉載!———————–
Android apk中很多地方都會用到Context,如:
- 彈出Toast
- 啟動Activity
- 傳送廣播sendBroadcast(intent)
- 操作資料庫
- 使用通知等
大多操作都是在Activity中進行的,而Activity本身就是一個Context物件。
但當應用程式架構複雜時,很多邏輯就會脫離Activity類,而是一個純粹的Java類,
此時若需要使用Context,怎麼辦呢?
本文主要介紹這種情況下獲取全域性Context的方法。
定製Application類
Android提供了一個Application類,應用程式啟動時系統會自動初始化該Application。
我們可以定製一個自己的Application類繼承自原始Application類,
以便管理程式的一些全域性狀態,如全域性Context。
public class MyApplication extends Application { private static Context mContext; @Override public void onCreate(){ mContext = getApplicationContext(); } public static Context getContext() { return mContext; } }
然後修改AndroidManifest.xml檔案,告知系統程式啟動時需要初始化MyApplication類,而不是預設的Application類。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.hello" android:versionCode="1" android:versionName="1.0" android:sharedUserId="android.uid.system" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> <application android:name="com.exmaple.hello.MyApplication" ...... > ...... </application> </manifest>
注意:指定MyApplication的name時一定要加上完整的包名:com.exmaple.hello.MyApplication,否則系統無法找到該類。