如何使用静态方法获取当前的 Context实例?
我不想每次 Context实例改变时都保存一次,请求大师们帮忙寻找解决方法。谢谢!
context 是跟着组件的
getApplicationContext()l了解一下
public class MyApplication extends Application{
private static MyApplication instance;
public void onCreate(){
super();
instance = this;
}
public static MyApplication getInstance(){
return instance;
}
}
二楼四楼都是挺好的方法 baseactivity 创建一个context = this; 让其他的activity 继承使用就好了 还有就是四楼 使用application 的方法 也是可以的 直接getInstance 就行了
BaseFragment维持一个mContext的成员变量即可,BaseActivity没必要维持这个变量在actvity中用this或者类名.this.另外Application中可以维持一个静态的sContext变量
编写Application
public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
//获取Context
context = getApplicationContext();
}
//返回
public static Context getContextObject(){
return context;
}
}
调用方法
MyApplication.getContextObject();
官方推荐优先getApplicationContext() 直接调用
除以下三种
shou a Dialog 禁止使用
start an Acitivity 不推荐
Layout inFlation 不推荐
如果涉及到以上三种情况 ,可以在baseActivity或者baseFragment, 封装 Context mContext=getApplicationContext();
所有的子模块 无需静态方法调用,直接使用mContext即可,希望能帮到你
这里主要考虑到 Service 和 activity 里面自带的Context,有可能会出现不正当回收会产生ANR。
如果能帮到你 请关注“DvlpNews”公众号