Android的单例模式
Android的单例模式在开发中经常用到,可以说是最基本的设计模式了。android的单例模式和java实现的方法基本一样,因为思想是相同的。不过在Android中会注意到内存泄漏的问题。
饿汉式
public class Single {
private Single() {
}
private static final Single singleInstance = new Single();
public static Single getInstance() {
return singleInstance;
}
}
懒汉式
public class SingleTon {
private static SingleTon singleTonInstance;
private SingleTon() {
}
private static synchronized SingleTon getInstance(){
if (null==singleTonInstance){
singleTonInstance = new SingleTon();
}
return singleTonInstance;
}
}
懒汉式同步锁
public class Singleton {
private static Singleton instance = null;
private Singleton(){
}
public static Singleton getInstance() {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
return instance;
}
}
双重校验锁
public class Singleton {
private static volatile Singleton instance = null;
private Singleton(){
}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
静态内部类
public class Singleton{
private static class SingletonHolder{
public static Singleton instance = new Singleton();
}
private Singleton(){}
public static Singleton newInstance(){
return SingletonHolder.instance;
}
}
枚举类单例
public enum Singleton{
//定义一个枚举的元素,它就是Singleton的一个实例
instance;
public void doSomething(){
// do something ...
}
}
在android中使用单例很简单,但是主要问题是当传入Context时出现内存泄漏,这个时候我们一般会传入ApplicationContext。就会避免内存泄漏了。