Android獲取Context(任意位置任意地方,全局上下文)
阿新 • • 發佈:2018-10-30
-type text 就會 etc lis ret 問題 normal 答案
一般獲取context的方法
1.Activity.this的context
(一般用法)返回當前activity的上下文,屬於activity ,activity 摧毀他就摧毀
2.getApplicationContext()
返回應用的上下文,生命周期是整個應用,應用摧毀它才摧毀
3.getBaseContext()
返回由構造函數指定或setBaseContext()設置的上下文
4.getActivity()
多用於fragment中
但是問題來了!
一般方法在一般的地方都能獲取,但是特殊的地方呢,上述情況都不太管用了,如工具類。但是有時過多時就會覺得過於頻繁。那麽有什麽一勞永逸的方法,答案就是使用 自定義Application。
廢話少說,上幹貨!
自定義Application步驟:
1.寫一個新的類繼承Application,代碼如:
/** * Author: ZhouJianbin周健彬 */ public class MyApplication extends Application { private static Context context; @Override public void onCreate() { super.onCreate(); context = getApplicationContext();2.添加在manifest中<application>中加入android:name="MyApplication"initXunFei(); } /** * 獲取全局上下文*/ public static Context getContext() { return context; } }
<application android:name="MyApplication" >3.然後使用只要需要context但又獲取不得或獲取麻煩的話,只要使用:
MyApplication.getContext()
註意:最好是在不得已的情況下使用上述方法來獲取context,而不是只要用到context就使用MyApplication.getContext(),因為這涉及到View等存在生命周期的問題。如toast要用到的context就要使用Activvity.this,否則可能報錯。(題外話:如果這麽容易被代替,google又不是傻子,早就淘汰了)
轉載請註明出處,謝謝!
Android獲取Context(任意位置任意地方,全局上下文)