Android中获得上下文的静态方法

如何使用静态方法获取当前的 Context实例?
我不想每次 Context实例改变时都保存一次,请求大师们帮忙寻找解决方法。谢谢!

context 是跟着组件的

  1. 可以写一个 基类, 比如 BaseActivity, BaseFragement 。在这里做更改context 的操作。
  2. Application 里直接写一个静态的context ,赋值为Application.this 也能满足很多场景。

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”公众号