Android獲取Context(任意位置任意地方,全域性上下文)
阿新 • • 發佈:2019-02-13
一般獲取context的方法
1.Activity.this的context
(一般用法)返回當前activity的上下文,屬於activity ,activity 摧毀他就摧毀
2.getApplicationContext()
返回應用的上下文,生命週期是整個應用,應用摧毀它才摧毀
3.getBaseContext()
返回由建構函式指定或setBaseContext()設定的上下文
4.getActivity()
多用於fragment中
一般方法在一般的地方都能獲取,但是特殊的地方呢,上述情況都不太管用了,如工具類。但是有時過多時就會覺得過於頻繁。那麼有什麼一勞永逸的方法,答案就是使用自定義Application。
自定義Application步驟:
1.寫一個新的類繼承Application,程式碼如:
public class MyApplication extends Application { private static Context context; @Override public void onCreate() { super.onCreate(); context = getApplicationContext(); initXunFei(); } /** * 獲取全域性上下文*/ public static Context getContext() { return context; } }
2.新增在manifest中<application>中加入android:name="MyApplication"
3.然後使用只要需要context但又獲取不得或獲取麻煩的話,只要使用:
MyApplication.getContext()
注意:最好是在不得已的情況下使用上述方法來獲取context,而不是隻要用到context就使用MyApplication.getContext(),因為這涉及到View等存在生命週期的問題。如toast要用到的context就要使用Activvity.this,否則可能報錯。