1. 程式人生 > >Android中全域性獲取Context

Android中全域性獲取Context

在日常開發中,很多情景都需要用到Context,例如:Toast,啟動活動,傳送廣播,操作資料庫,使用通知等等。如果在活動中進行這些操作倒是沒有什麼難點,活動本身就是Context。當架構複雜,程式碼邏輯脫離Activity時,就需要自定義一個全域性Context以供呼叫。

Android提供裡一個Application類,每當app啟動的時候,系統會自動將這個類進行初始化,因此我們可以自定義一個Application類繼承自Application。程式碼如下:

public class MyApplication extends Application{
	private static Context context;

	@Override
	public void onCreate(){
		context = getApplicationContext();
	}

	public static Context getContext(){
		return context;
	}
}
呼叫getApplicationContext方法得到一個應用程式級別的Context

接下來在AndroidManifest.xml檔案中修改<Application>標籤為android:name="[包名].MyApplication"則可以告知系統當應用啟動時初始化MyApplication類,而不是預設的Application。這樣我們就是先了全域性獲取Context的機制,在接下來的專案中在任何地方都可以使用這個Context,通過我們編寫好的MyApplication.getContext()方法就可以了。例如:

Toast.makeText(MyApplication.getContext(),"Any Text",Toast.LENGTH_SHORT).show();
需要注意,任何專案都只能配置一個Application。