我正在尝试在我的Android应用程序中使用单例框架。当我调用getInstance()时,它初始化很好,但是当我在另一个活动中调用getInstance()时,它总是创建一个新实例,而不是返回已经创建的实例。
public class LinkedList {
private static LinkedList theList;
public static LinkedList getInstance(){
if(theList == null){
System.out.println("New List*********************");
return new LinkedList();
}
else
return theList;
}
private LinkedList(){
defaultPopulate();
}
}
我很好奇是否因为我是Android编程新手而失踪了一些小事。任何帮助表示赞赏。
答案 0 :(得分:5)
public static LinkedList getInstance(){
if(theList == null){
System.out.println("New List*********************");
theList = new LinkedList();
}
return theList;
}
答案 1 :(得分:1)
您实现单例实例
有多种类型在急切的初始化中,Singleton类的实例是在类加载时创建的,这是创建单例类的最简单方法。
public class SingletonClass {
private static volatile SingletonClass sSoleInstance = new SingletonClass();
//private constructor.
private SingletonClass(){}
public static SingletonClass getInstance() {
return sSoleInstance;
}
}
此方法将检查是否已创建该类的任何实例?如果是,那么我们的方法(getInstance())将返回该旧实例,如果没有,则它在JVM中创建单例类的新实例并返回该实例
public class SingletonClass {
private static SingletonClass sSoleInstance;
private SingletonClass(){} //private constructor.
public static SingletonClass getInstance(){
if (sSoleInstance == null){ //if there is no instance available... create new one
sSoleInstance = new SingletonClass();
}
return sSoleInstance;
}
}
还有一些需要考虑的内容,例如 Java Reflection API ,线程安全&序列化安全 Singleton。
此Blogpost包含各种Singleton设计模式,有助于查看此https://medium.com/@kevalpatel2106/digesting-singleton-design-pattern-in-java-5d434f4f322#.mclooglq8