Android笔记-3:重读单例模式有感(续)

Android笔记-2:重读单例模式有感这篇中最后写道还要重写工具类改为单例模式。

有读者其实应该发现上篇文章中用到的单例模式其实是一个线程不安全的单例模式,多线程同时运行的情况下有可能会产生多个实例,虽然有问题,但由于我们对单例模式要求不高,允许产生多个实例,所以app没有出现问题。后来又出现内存泄漏问题,直接取消了单例模式,今天我们重新用单例模式改写一下工具类:

今天用到了饿汉单例模式,代码如下:

首先重写一个私有的构造函数。

然后,定义一个私有的静态变量mShareUtils,并且直接初始化,这样保证在程序运行时候内存中就产生一个ShareUtils,同时其他地方无法新建ShareUtils,这样保证了内存中只有一个对象(当然通过反射可以生成一个新的ShareUtils,这里我们不去考虑,除非有人恶意为之)。

最后重写getInstance方法。如上图。这里的context始终会被传入,防止内存泄漏。

至此,ShareUtils工具类又变成了单例模式。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 4,304评论 4 34
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,816评论 25 709
  • 1 场景问题# 1.1 读取配置文件的内容## 考虑这样一个应用,读取配置文件的内容。 很多应用项目,都有与应用相...
    七寸知架构阅读 6,891评论 12 68
  • 媳妇儿身体状况一直不好,主要表现在抵抗力差,免疫力差,容易感冒,而且患有轻微焦虑症。为此,看了很多医生,吃了很多中...
    阿牛_50f7阅读 224评论 0 0
  • HDFS详解-02 1.机架 rack 问题: 2.副本放置策略 3.文件读流程 --> FSDataInputS...
    苏木logwood阅读 755评论 0 0