Nad*_*lli 5 java singleton android design-patterns
我一直在阅读关于Android中的Singleton模式使用及其在保持Context方面的缺点.实际上,当我实现以下代码时:
private static HttpManager sSingleton;
private Context mContext;
private HttpManager(Context context) {
mContext = context;
}
public static synchronized HttpManager getInstance(Context context) {
if (sSingleton == null) {
sSingleton = new HttpManager(context);
}
return sSingleton;
}
Run Code Online (Sandbox Code Playgroud)
Android Studio向我显示以下警告:
不要将Android上下文类放在静态字段中(静态引用HttpManager,其中字段mContext指向Context); 这是内存泄漏,也会破坏Instant Run.
但是,我可以在Android的文档页面中看到Singletons的实现和推荐.
如果您的应用程序持续使用网络,那么设置一个RequestQueue实例可能会最有效,该实例将持续您的应用程序的生命周期.您可以通过各种方式实现这一目标.推荐的方法是实现封装RequestQueue和其他Volley功能的单例类.
由于谷歌自相矛盾,有人可以指导我并就此提出建议吗?
Com*_*are 17
由于谷歌自相矛盾
不它不是.
引用的Lint警告并没有抱怨创建单身人士.它抱怨创建单身人士持有任意的参考Context,因为这可能是一个像Activity.我们希望,通过改变mContext = context来mContext = context.getApplicationContext(),你将摆脱这一警告的(虽然它是可能的,这仍然打破即时运行-我真的不能作出评论).
创建单例是好的,只要你非常小心地这样做,以避免内存泄漏(例如,持有无限static引用Activity).