根据我的理解,Android中的应用程序是一个单例(如果我错了,请纠正我),我们总是只有一个应用程序上下文实例。
因此,从这个角度来看,在Application类中保存应用程序Context是不好的做法吗? 它会导致大量内存泄漏吗?
以下是一个例子:
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,大多数静态方法总是需要上下文。因此,我不是每次都传递它(甚至将它存储在一个可能很糟糕的实例中),而是考虑存储应用程序上下文。我没有看到哪些缺点?
答案 0 :(得分:11)
在我的Application类中保存应用程序Context是不好的做法吗?
这是一种代码味道。
会导致大量内存泄漏吗?
拥有静态数据成员不会导致大量内存泄漏。过度使用Application
对象是否会导致大量内存泄漏取决于您在何处以及如何使用它。
我没有看到哪些缺点?
并非所有Context
都是平等的。一般来说,只有当你知道具体为什么需要Application
上下文时才使用Application
,而不是一切。
DoubleEncore的Dave Smith有一个awesome blog post,涵盖Context
类型之间的差异以及何时使用另一个类型。