在 Android 中具有上下文的单例
我想创建一个单例类,该类可以从应用程序中的所有点调用。问题是这个类的操作需要一个上下文。
我不想在每个活动中重新创建单例,因为这样它就会失去所有意义,所以我考虑在我的MainActivity中创建它,使用init方法,我将上下文作为参数传递。从那时起,我的 Singleton 将是可用的,但我认为这是糟糕的设计,因为这样我的 MainActivity 引用将始终保持,因此我可能会遇到内存泄漏。
我就在这里吗?
我想创建一个单例类,该类可以从应用程序中的所有点调用。问题是这个类的操作需要一个上下文。
我不想在每个活动中重新创建单例,因为这样它就会失去所有意义,所以我考虑在我的MainActivity中创建它,使用init方法,我将上下文作为参数传递。从那时起,我的 Singleton 将是可用的,但我认为这是糟糕的设计,因为这样我的 MainActivity 引用将始终保持,因此我可能会遇到内存泄漏。
我就在这里吗?
由于内存泄漏,您不将主要活动上下文保存到单例中是正确的。如果你需要在单例中保持恒定的上下文,请使用 getApplicationContext()。这可以安全地保存。但请注意,此上下文不适用于大多数与 gui 相关的函数。在极少数情况下,您需要在单例中运行活动级别上下文,将调用活动上下文传递给单例的方法而不保存
试试 :WeakReference<Context>
private WeakReference<Context> context;
public static synchronized OsControler getInstance(Context context, int numero) {
if (mInstance == null) {
mInstance = new OsControler(context, numero);
}
return mInstance;
}
private OsControler(Context context, int numero) {
this.context = new WeakReference<>(context);
NUMERO = numero;
}