在您阅读Android源码的生涯中,您见过Android 框架层或者第三方框架哪些地方使用了单例模式?单例模式的实现是哪种方式?

在你阅读的Android源码中,您见过Android框架层或者第三方框架哪些地方使用了单例模式?单例模式的实现是哪种方式?

阅读 2.5k
3 个回答

EventBus,

    /** Convenience singleton for apps using a process-wide EventBus instance. */
    public static EventBus getDefault() {
        EventBus instance = defaultInstance;
        if (instance == null) {
            synchronized (EventBus.class) {
                instance = EventBus.defaultInstance;
                if (instance == null) {
                    instance = EventBus.defaultInstance = new EventBus();
                }
            }
        }
        return instance;
    }

android源码里面一大堆单例模式,比如下面这个实现方法:静态方法加同步锁

 public static WindowManagerGlobal getInstance() {
        synchronized (WindowManagerGlobal.class) {
            if (sDefaultWindowManager == null) {
                sDefaultWindowManager = new WindowManagerGlobal();
            }
            return sDefaultWindowManager;
        }
    }

太多了,比如很常用的LinkMovementMethod

    public static MovementMethod getInstance() {
        if (sInstance == null)
            sInstance = new LinkMovementMethod();

        return sInstance;
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏