android 静态方法持有context的内存泄漏

最近在优化项目的时候,解决内存泄漏有点懵了。关于静态方法持有context的时候,但是又不能使用applicationContext的时候 ,比如方法里面有dialog的时候。

public class A{

        public static a(Context context){
        //.....

        }
}

比如在这个时候context是activity传入的时候回造成内存泄漏吗?求大佬们帮助

activity内存泄漏是指在activity退出将要销毁的时候,还有其他变量引用这acitivty这个实例导致无法销毁,比如你的类A是这样的
``` public class A{

    static Context mContext

    public static a(Context context){
            mContext = context
    //.....

    }

}

当调用a方法是传入的是acitivty实例,mContext这个静态变量就会一直引用这activity使得其无法销毁。所以你如果只是像显示一个
dailog传acitivty是没问题的(不要赋值给mContext就行)

最开始我也是这样想的,不过我用leakcanary测出来,还是有内存泄漏。所以我就很茫然了。

public class DialogUtil {

    public static void show(Context context) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context)
                .setTitle("呵呵")
                .setMessage("哈哈");
        builder.create().show();
    }

} 

这样的方法跟把show方法放在acitivty中是一样,不存在泄不泄漏

public static void show(Activity context) {} 你用activity级试试,Context是Application级的,你的dialog是需要及时销毁的所以要用activity级的上下文

出现内存泄漏的问题,也有可能是静态static的问题。可以在ondestory方法里面。把这些static的对象智为null