Java 将上下文作为参数传递给Singleton类中的方法是否会导致内存泄漏

Java 将上下文作为参数传递给Singleton类中的方法是否会导致内存泄漏,java,android,singleton,Java,Android,Singleton,我正在声明一个单例类,需要在其中传递该类中某个方法的上下文参数 public class MySingleton() { Private Context mContext; Private static MySingleton mInstance; public static MySingleton mInstance() { if (mInstance == null) { mInstance = new MySingleton

我正在声明一个单例类,需要在其中传递该类中某个方法的上下文参数

public class MySingleton() {
    Private Context mContext;
    Private static MySingleton mInstance;

    public static MySingleton mInstance() {
        if (mInstance == null) {
            mInstance = new MySingleton();
        }
        return mInstance;
    }

    public void myMethod(Context context)
    {   
       this.mContext = context;
       // write your code here....
     }
}

这会导致内存泄漏。

这可能会导致内存泄漏,因为您不知道将引用哪种类型的
上下文。更安全的做法是写:

this.mContext = context.getApplicationContext();

这样,您就可以确定
mContext
引用的是
应用程序
singleton。

如果我删除了mContext,并将上下文作为局部变量保存,会怎么样?@HmH:这样可能安全,虽然它有点取决于您对该变量所做的操作。调用此方法创建AlarmManager,并使用上下文启动intent和PendingEvent。但是这个方法从3个不同的地方被调用了3次。@HmH:你所描述的应该是安全的,特别是如果你没有在你的单例字段中保留这些内容的话。您始终可以使用诸如泄漏金丝雀之类的工具来尝试查看是否泄漏了上下文。