我上课了:
class DeviceDao {
//singleton
static final DeviceDao _singleton = DeviceDao._( );
static DeviceDao get instance => _singleton;
DeviceDao._( ) {
print("CREATING INSTANCE");
}
...... class data somes here
}
我需要访问应用程序中的一个实例和一个实例。在某个时候,“创建实例”被打印两次,这意味着我的单例被处置了。在应用程序中的任何地方都没有_singleton的二传手。令人遗憾的是,此时所有类数据都变为空值。这种单例在什么情况下可以处置?
答案 0 :(得分:0)
尝试通过这种方式定义您的Singleton:
class DeviceDao {
//singleton
static final DeviceDao _singleton = DeviceDao._( );
factory DeviceDao() => _singleton;
DeviceDao._( ) {
print("CREATING INSTANCE");
}
...... class data somes here
}
然后,您只需调用Class函数即可在任何地方访问Singleton:
DeviceDao().someClassMethod()
当您不想返回初始化的类本身时,请使用Factory。它只是返回在编译时分配的静态单例变量,因此仅存在一个静态变量。