Android 保存应用程序上下文实例是一种不好的做法吗?
据我所知,Android中的应用程序是一个单例(如果我错了,请纠正我),我们总是只有一个应用程序上下文实例 因此,从这个角度来看,在我的应用程序类中保存应用程序上下文是一种不好的做法吗? 它会导致大规模内存泄漏吗 以下是一个例子:Android 保存应用程序上下文实例是一种不好的做法吗?,android,design-patterns,android-context,Android,Design Patterns,Android Context,据我所知,Android中的应用程序是一个单例(如果我错了,请纠正我),我们总是只有一个应用程序上下文实例 因此,从这个角度来看,在我的应用程序类中保存应用程序上下文是一种不好的做法吗? 它会导致大规模内存泄漏吗 以下是一个例子: public class MyApp extends Application { private static Context appContext = null; // <-- here is the thing! @Override
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;
}
}
公共类MyApp扩展应用程序{
私有静态上下文appContext=null;//
在我的应用程序类中保存应用程序上下文是一种不好的做法吗
这是一种代码气味
它会导致大规模内存泄漏吗
拥有静态数据成员不会导致大规模内存泄漏。过度使用应用程序
对象是否会导致大规模内存泄漏取决于您在何处以及如何使用它
我没有看到的缺点是什么
并非所有的上下文都是平等创建的。一般来说,只有当您知道具体为什么需要应用程序上下文时,才使用应用程序,而不是所有内容
DoubleEncore的戴夫·史密斯(Dave Smith)有一篇文章介绍了上下文类型之间的差异,以及何时使用它们。你所说的“代码气味”是什么意思?闻起来像是坏习惯?@Bolhoso:"在计算机编程中,代码气味是程序源代码中可能表明深层次问题的任何症状。代码气味通常不是bug,它们在技术上并不错误,目前也不会阻止程序运行。相反,它们表明设计中的弱点,可能会减慢开发或增加开发速度他说:“这总是非常糟糕的,而且是“猪”式的方法。永远不要这样做。@Geralt我理解你的观点。尽管文章说”现在不管我们的上下文来自哪里,因为我们持有的引用是安全的。应用程序上下文本身就是一个单例,所以我们不会通过创建另一个对它的静态引用来泄漏任何内容。,在我的情况下,创建一个Singleton Preferences Manager会更安全,因为我在getInstance中接收到一个上下文,在那里我可以保存对应用程序上下文的引用。对吗?@IgorGanapolsky:您绝对不需要“将视图作为全局静态变量传递”。