Android笔记-2:重读单例模式有感这篇中最后写道还要重写工具类改为单例模式。
有读者其实应该发现上篇文章中用到的单例模式其实是一个线程不安全的单例模式,多线程同时运行的情况下有可能会产生多个实例,虽然有问题,但由于我们对单例模式要求不高,允许产生多个实例,所以app没有出现问题。后来又出现内存泄漏问题,直接取消了单例模式,今天我们重新用单例模式改写一下工具类:
今天用到了饿汉单例模式,代码如下:
首先重写一个私有的构造函数。
然后,定义一个私有的静态变量mShareUtils,并且直接初始化,这样保证在程序运行时候内存中就产生一个ShareUtils,同时其他地方无法新建ShareUtils,这样保证了内存中只有一个对象(当然通过反射可以生成一个新的ShareUtils,这里我们不去考虑,除非有人恶意为之)。
最后重写getInstance方法。如上图。这里的context始终会被传入,防止内存泄漏。
至此,ShareUtils工具类又变成了单例模式。
网友评论