即使我创建了一个静态类来保存数据库帮助程序实例,我也很困惑我在哪里实例化该类。我如何确保只有一个类的实例可用?
我想说的是,我对哪些活动感到困惑,我应该如何设置类以使其保持一个实例?
不确定为什么会掉线。
最初,我有一个
public class DbStaticClass {
public static LinkDataHandler sqlDataHandler = null;
}
我在Splashscreen初具观念,因为那是参赛活动。但它总是导致Sqllite db的多个实例。因此,我很困惑我在哪里做?
答案 0 :(得分:1)
但它总是导致Sqllite db的多个实例。
你不能在Android中拥有Singleton类,因为Android Activity类的生命周期(甚至是Process)与应用程序的生命周期无关,Android可以随时实例化和销毁你的Activity。而不是单身,你想要写一个Borg;而不是依赖于只有一个类的实例,多个Borg实例应该具有蜂巢头脑。
答案 1 :(得分:0)
如何确保只有一个类的实例可用?
看来你是以错误的方式定义单身人士。 Singleton本身确保只有一个类的实例可用。正确的方法是:
public class SQLiteBaseClass extends SQLiteOpenHelper {
private static SQLiteBaseClass mInstance;
private SQLiteBaseClass(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public static SQLiteBaseClass getInstance(Context c) {
if (mInstance == null) {
mInstance = new SQLiteBaseClass(c);
}
return mInstance;
}
}
现在,只要您需要执行数据库操作,只需调用SqliteBaseClass.getnstance()
有关详细描述,您可以阅读我的博客文章here