Android经典的单例模式

当第一次加载Singleton类时不会初始化sInstance,只有在第一次调用Singleton的getInstance方法时才会导致sInstance被初始化。因此第一次调用getInstance方法会导致

虚拟机加载SingletonHolder类,这种方法不仅能够确保线程安全,也能够保证单例对象的唯一性,同时也延迟的单例的实例化,所以这是推荐使用的单例模式方式

public class Singleton {
     private Singleton(){};
     public static Singleton getInstance(){
         return SingletonHolder.sInstance;
     }
     /**
      * 静态内部类
      */
     private static class SingletonHolder{
         private static final Singleton sInstance = new Singleton();
     }

}

这个方法虽然好像也很不错,但是好像会出现什么双重检查锁定(DCL)失效。

public class MyImageLoader extends ImageLoader {
    private static MyImageLoader instance;

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

    protected MyImageLoader() {

    }
}
时间: 2024-08-07 14:11:24

Android经典的单例模式的相关文章

Android经典完美退出方法

Android经典完美退出方法,使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity,并且容易理解.易于操作,非常不错! AppUtils类(储存每一个Activity,并实现关闭所有Activity的操作) /* * To change this template, choose Tools | Templates * and open the template in the

[Android]Android经典教程

第一季1.Android平台一日游2.搭建Android开发环境3.Say Hello To Android4.Activity初步5.Activity和Intent6.Android当中的常见控件7.Activity生命周期(一)8.Activity生命周期(二)9.Activity布局初步(一)10.Activity布局初步(二)11.Activity布局初步(三)12.Android常见控(二)13.Android常用控件(三)14.Handler的使用(一)15.Handler的使用(二

Android开发之单例模式初探(源代码分享)

单例模式是什么呢?是Java23中模式之一,在Android开发中也有着广泛的运用,比如Calander类,在创建对象的时候并不是通过 new Calander而是Calander.getInstnce(),这就是单例模式的一种运用,应用的场合是什么呢?我们在很多时候有些对象只需要一个就够了,并不需要多个,就比如古代的皇帝,一山不容二虎,老虎多了只有坏处没有好处.它的作用就是保证整个应用程序中某个实例有且只有一个,one  is all! 单例模式呢分为两种一个是饿汉模式一个是懒汉模式,让我们先

处理android 经典蓝牙发送文件时接收包的问题

需求:android 经典蓝牙发送文件,发送端支持暂停操作(变态!!!!),还想要断点续传(更变态!!!) 大致实现:   client端发送定长包,文件首包包头(固定长度)包含此文件标示(名称,文件流总长度等),并且要处理好socket缓存区 溢出的问题,防止出现丢包. server端从socket读取数据时按照定长包读取,长度不够等下组数据来,长度长了截掉,每个数据流进行包头判断,前一文件未收完的情况下,收到包头数据流,就丢弃,开始接受新的文件流. case点:包头判断的过程:有两种方式:

Android经典面试题总结(未完待续)

1.生命周期 场景演示 : 切换到该Fragment 11-29 14:26:35.095: D/AppListFragment(7649): onAttach 11-29 14:26:35.095: D/AppListFragment(7649): onCreate 11-29 14:26:35.095: D/AppListFragment(7649): onCreateView 11-29 14:26:35.100: D/AppListFragment(7649): onActivityCr

Android中的单例模式

定义: 单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 使用场景: 确保某一个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一个. UML类图: 单例模式几个关键点: 1.构造函数不对外开放,一般为private. 2.通过一个静态方法或者枚举返回单例类对象. 3.确保单例类的对象有且只有一个,尤其在多线程环境下. 4.确保单例类对象在反序列化时不会重新构建对象. 单例模式简单代码: public class Single

Android设计模式之单例模式(Singleton Pattern)

个人总结学习和研究,部分内容参考<Android源码设计模式解析与实战>一书~~ 一.  定义: 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 也就是说,单例要满足3点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯一实例.(构造函数私有化,防止外部程序通过new来构造). 3.单例类必须给其他对象提供这一实例.(暴露公有静态方法或者通过枚举返回单例类对象). 二.  使用场景: 确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源.比如说在一个

Android设计模式之单例模式的七种写法

一 单例模式介绍及它的使用场景 单例模式是应用最广的模式,也是我最先知道的一种设计模式.在深入了解单例模式之前.每当遇到如:getInstance()这样的创建实例的代码时,我都会把它当做一种单例模式的实现. 事实上常常使用的图片载入框架ImageLoader的实例创建就是使用了单例模式.由于这个ImageLoader中含有线程池.缓存系统.网络请求,非常消耗资源,不应该创建多个对象,这时候就须要用到单例模式. ImageLoader的创建代码例如以下: ImageLoader.getInsta

Android 设计模式 之 单例模式

http://blog.csdn.net/fangchongbory/article/details/7734199 目录(?)[+] 单例模式常见情景 首先实现1中的单例模式A 实现2中单例模式B 实现3单例模式C 实现4单例模式D 可带参数单例模式E 终极版单例模式F android中源码单例模式举例 日历模块 Collator类 Editable类 AccessibilityManager类 1.单例模式常见情景 设计模式中,最简单不过的就是单例模式.先看看单例模式 原文:http://w