单例:
是Java中特殊的类,创建实例时一个单例仅允许创建一个实例,应用在内存中存活多久,单例就存活多久。存活时间比Activity或Fragment活的长久,这也是Android中使用单例的原因,即使Activity或Fragment已经被销毁,单例依然不会受到影响但是,如果单例使用不当,会导致项目难以维护,
使用
创建单例,需创建一个带有私有构造方法和一个get()方法,私有构造方法的目的时不允许其他的类创建该类的对象,
public static A sA;
public A(Context ctx) {
// 可以对存储的对象进行初始化操作
}
public static A get(Context ctx){
if (sA == null){
return new A(ctx);
}
return a;
}
联想记忆:
优点
单例能够方便地存储控制模型层对象,假如一个应用的多个Activity和Fragment会修改对象A的数据,怎么保证发送给其他控制单元的是最新的数据呢,如果用单例,那么所有的修改都会由该单例来处理,而且控制单元流转时,可以给每个A对象添加ID标识,通过ID,单例就可以完整获取对象A的数据了
缺点
单例虽然能存储数据,存活时间长,但这并不代表它能永存,在切换应用或者Android进行内存回收时,单例和所保存的实例变量可能会丢失,也就是说,单例无法进行持久化存储
单例不利于单元测试,