例如,我有一个班级
public class EagerInitializedSingleton {
private static final EagerInitializedSingleton instance = new EagerInitializedSingleton();
public static EagerInitializedSingleton getInstance(){
return instance;
}
}
我的应用程序有两个活动A.java和B.java(来自A我可以去B) 在B活动中,我有
import EagerInitializedSingleton.java;
public class B{
onCreate(...){
EagerInitializedSingleton.getInstance()...
}
}
我的问题是instantiated
何时被实例化
EagerInitializedSingleton.java
如果可能,我可以检查何时通过写入日志或其他东西进行实例化? 任何帮助都将非常感激。
更新
我按照此处创建EagerInitializedSingleton
http://www.journaldev.com/1377/java-singleton-design-pattern-best-practices-examples
他们说了
如果您的单例类没有使用大量资源,那就是 使用方法。但在大多数场景中,Singleton类都是 为文件系统,数据库连接等资源创建 我们应该避免实例化,除非客户端调用 getInstance方法
像某些回答一样,当我致电instance
时,EagerInitializedSingleton.getInstance()...
会被实例化,那么谁是正确的?
答案 0 :(得分:3)
static
个变量。它将在课程的所有实例中共享。请记住,它将在任何实例创建之前初始化。
所以,在你的问题中:
启动应用程序时(活动开始前)
没有
导入
时EagerInitializedSingleton.java
没有
当EagerInitializedSingleton.getInstance()
时
是
或者每当您对EagerInitializedSingleton
类进行静态引用时。
修改 - 只是根据评论清除内容:
致电getInstance()
不会导致实例创建。但是,类的 static
引用会在第一次加载类时执行。
答案 1 :(得分:1)
致电EagerInitializedSingleton.getInstance()
答案 2 :(得分:1)