全域性獲取Context的技巧
阿新 • • 發佈:2019-02-04
全域性獲取Context的技巧
在android開發中,很多地方都要用到Context上下文這個類物件,比如:彈出 Toast
的時候需要、啟動活動的時候需要、傳送廣播的時候需要、操作資料庫的時候需要、使用通
知的時候需要等。
如果是在Activity中,那麼獲取這個context物件很容易,因為Activity本身就繼承Context,直接受用this就可以了。
但是對於比較複雜的邏輯,這些程式碼沒有放在Activity中,那麼,獲取Context就顯得不是那麼容易了。
這裡告訴大家一個技巧:
Android 提供了一個 Application 類,每當應用程式啟動的時候,系統就會自動將這個類
進行初始化。 而我們可以定製一個自己的 Application 類, 以便於管理程式內一些全域性的狀態資訊,比如說全域性 Context。
1,新建一個類MyApplication繼承Application.
程式碼如下:
package com.example.networktest; public class MyApplication extends Application { private static Context context; @Override public void onCreate() { context = getApplicationContext(); } public static Context getContext() { return context; } }
2,在 AndroidManifest.xml 檔案的<application>標籤下進行指定就可以了,程式碼如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.networktest" android:versionCode="1" android:versionName="1.0" > …… <application android:name="com.example.networktest.MyApplication" …… > …… </application> </manifest>
注意:指定 MyApplication 的時候一定要加上完整的包名,不然系統將無法找到這
個類。
這樣我們就已經實現了一種全域性獲取 Context的機制,之後不管你想在專案的任何地方
使用 Context,只需要呼叫一下 MyApplication.getContext()就可以了。