当前位置: 首页 > 面试题库 >

Android-Google在Singleton模式方面的矛盾

俞子实
2023-03-14
问题内容

我已经阅读了一些有关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;
}

Android Studio向我显示以下警告:

不要将Android上下文类放在静态字段中(对HttpManager的静态引用,其中mContext字段指向Context);这是内存泄漏,并且还会中断即时运行。

但是,我可以在此页面的Android文档中看到并实现Singletons

如果您的应用程序不断使用网络,则设置单个RequestQueue实例(这将持续应用程序的生命周期)可能是最有效的。您可以通过多种方式实现这一目标。推荐的方法是实现一个封装RequestQueue和其他Volley功能的单例类。

由于Google自身存在矛盾,因此有人可以在这方面指导我并提出建议吗?


问题答案:

既然Google在自相矛盾

不它不是。

引用的Lint警告不是抱怨创建单例。它在抱怨创建单例持有对任意的引用Context,因为这可能像一个Activity。希望通过更改mContext = contextmContext = context.getApplicationContext(),您将摆脱该警告(尽管可能仍然会中断即时运行-
我不能对此发表评论)。

只要您非常小心地创建单例,就可以避免内存泄漏(例如,对持有不确定的static引用Activity)。



 类似资料:
  • 问题内容: 编辑:回答-错误是方法不是静态的 我使用了Singleton设计模式 我的问题是如何在 另一个 类中创建Singleton 类的对象? 我试过了: 什么是正确的代码? 谢谢,斯宾塞 问题答案: 是正确的方法。确保您的方法确实正确。 由于您的实现远非安全- 您的对象可以通过反射实例化,因此您可能想基于

  • 本文向大家介绍Python下singleton模式的实现方法,包括了Python下singleton模式的实现方法的使用技巧和注意事项,需要的朋友参考一下 很多开发人员在刚开始学Python 时,都考虑过像 c++ 那样来实现 singleton 模式,但后来会发现 c++ 是 c++,Python 是 Python,不能简单的进行模仿。 Python 中常见的方法是借助 global 变量,或者

  • 单例模式确保每个指定的类只存在一个实例对象,并且可以全局访问那个实例。一般情况下会使用延时加载的策略,只在第一次需要使用的时候初始化。 注意:在 iOS 中单例模式很常见,NSUserDefaults.standardUserDefaults() 、 UIApplication.sharedApplication() 、 UIScreen.mainScreen() 、 NSFileManager.

  • Google Singleton Detector 简称为 GSD 是一个通过分析 Java 字节码来检测 Java 中单件(Singletons)的使用。

  • 问题内容: 最近,我碰到了C ++的Singleton设计模式的实现/实现。它看起来像这样(我从现实生活的示例中采用了它): 从该声明中,我可以推断出实例字段是在堆上初始化的。这意味着存在内存分配。对我来说,完全不清楚的是何时确切地将要释放内存?还是有错误和内存泄漏?似乎实现中存在问题。 我的主要问题是,如何以正确的方式实施它? 问题答案: 在2008年,我提供了Singleton设计模式的C +

  • 设计模式之Singleton(单态) 定义: Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。 还有, singleton能够被状态化; 这样,多个单态类在一起就可以作为一个状态仓库一样向外提供服务,比如,你要论坛中的帖子计数器,每次浏览一次需要计数,单态类能否保持住这个计数,并且能sync