2、android中源码单例模式举例
  1、日历模块

  App路径:packages/providers/CalendarProvider
  文件:packages/providers/CalendarProvider/src/com/android/provider/calendar/CalendarDatabaseHelper.java
  单例代码:
  private static CalendarDatabaseHelper sSingleton = null;     
  public static synchronized CalendarDatabaseHelper getInstance(Context context) { 
  if (sSingleton == null) { 
  sSingleton = new CalendarDatabaseHelper(context); 
  } 
  return sSingleton; 
  } 
  可以看出,这是用到了2中的单例模式B.
  2.Collator类
  文件:libcore/luni/src/main/java/com/ibm/icu4jni/text/Callator.java
  libcore/luni/src/main/java/com/ibm/icu4jni/text/RuleBasedCallator.java
  单例代码:
  public static Collator getInstance(Locale locale) { 
  return new RuleBasedCollator(locale); 
  } 
  p;    
  RuleBasedCollator(Locale locale) { 
  m_collator_ = NativeCollation.openCollator(locale.toString()); 
  } 
  static native int openCollator(String locale); 
  这是上面给出的单例模式E,可带参数的单例模式
  3.Editable类
  文件:frameworks/base/core/java/android/text/Editable.java
  private static Editable.Factory sInstance = new Editable.Factory(); 
  /**
  * Returns the standard Editable Factory.
  */ 
  public static Editable.Factory getInstance() { 
  return sInstance; 
  } 
  可见这是单例模式D是实例应用
  4.AccessibilityManager类
  文件:frameworks/base/core/java/android/view/accessibility/AccessibilityManager.java
  public static AccessibilityManager getInstance(Context context) { 
  synchronized (sInstanceSync) { 
  if (sInstance == null) { 
  sInstance = new AccessibilityManager(context); 
  } 
  } 
  return sInstance; 
  } 
  这是单例模式C的应用。
  android使用单例模式的地方很多,特别是数据库创建时,会使用到单例模式。因每种单例模式试用场景不一样,所以android在不同地方使用了不同的单例模式实现方式。