【发布时间】:2017-07-30 16:48:45
【问题描述】:
在 Android 中,我们经常不得不使用 Context 类。当一个类或方法需要 Context 时,我们经常使用 Activites 或 Services 来表示此类参数。以下代码来自我找到的一个网站,但我不知道这是否是一种好习惯以及是否可以使用此解决方案:
public class MyApplication extends Application {
private static MyApplication singleton;
@Override
public void onCreate() {
super.onCreate();
singleton = this;
}
public static MyApplication getInstance() {
return singleton;
}
}
首先,在这里使用单例模式对我来说看起来不错。我的意思是每次我的一些应用程序代码在 Android 中执行时,系统都会创建一个进程,因此也存在一个应用程序上下文,我可以在其他类中使用它。
另一方面,使用它是错误的。使用这种模式,每个类(还有我们应该避免 Context 对象的 pojo 和单例)都能够简单地获得对实际 Context 的有效引用(我认为)不是 Context 对象背后的想法。
那么您如何看待这个解决方案?可以使用它还是有一些原因(例如应用程序的生命周期等)来避免这种情况?还是我这里的一些假设是错误的?
【问题讨论】:
-
这不是单例。为了有一个单例,你必须声明一个
private构造函数。上面的代码所做的是将您的类的实例保存在static属性中。 -
@CommonsWare 感谢您提供链接。我搜索了一下,但显然没有找到这个问题的正确关键字,抱歉。
标签: android android-context android-lifecycle