根据我的理解,Android 中的应用程序是一个单例(如果我错了请纠正我)并且我们始终只有一个应用程序上下文实例。
那么,从这个角度来看,将应用程序上下文保存在我的应用程序类中是一种不好的做法吗? 它会导致大量内存泄漏吗?
这是一个例子:
public class MyApp extends Application {
private static Context appContext = null; // <-- here is the thing!
@Override
public void onCreate() {
appContext = this;
}
public static Context getApplicationContextSingleton () {
return MyApp.appContext;
}
}
这样做的原因是全局访问的类,如 PreferencesManager,大多数具有静态方法,总是需要一个上下文。因此,我没有考虑每次都传递它(或者甚至将它存储在一个实例中,这可能很糟糕),而是考虑存储应用程序上下文。我没有看到的缺点是什么?
最佳答案
is it a bad practice to save the application Context in my Application class?
这是一种代码味道。
Can it lead to a massive memory leak?
拥有静态数据成员不会导致大量内存泄漏。过度使用 Application
对象是否会导致大量内存泄漏取决于您使用它的位置和方式。
What are the drawbacks I'm not seeing?
并非所有的 Context
都是一样的。一般来说,只有当您知道具体为什么需要Application
上下文时才使用Application
,而不是用于所有情况。
DoubleEncore 的 Dave Smith 有一个 awesome blog post涵盖了 Context
类型之间的差异以及何时使用它们。
关于android - 持有应用程序上下文实例是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20301989/