Android 如何创建一个单例数据库类来将数据写入Sqllite数据库?

Android 如何创建一个单例数据库类来将数据写入Sqllite数据库?,android,Android,尽管我创建了一个静态类来保存数据库帮助器实例,但我还是不知道在哪里实例化该类。如何确保该类只有一个实例可用 我想说的是,我搞不清楚是哪种活动,我应该如何设置类以使其保持一个实例 不知道为什么会有人投反对票 起初,我有一个 public class DbStaticClass { public static LinkDataHandler sqlDataHandler = null; } 这是我在Splashscreen上初始化的,因为这是参赛者的活动。但它总是导致多个Sqllite

尽管我创建了一个静态类来保存数据库帮助器实例,但我还是不知道在哪里实例化该类。如何确保该类只有一个实例可用

我想说的是,我搞不清楚是哪种活动,我应该如何设置类以使其保持一个实例

不知道为什么会有人投反对票

起初,我有一个

public class DbStaticClass {

    public static LinkDataHandler sqlDataHandler = null;
}
这是我在Splashscreen上初始化的,因为这是参赛者的活动。但它总是导致多个Sqllite db实例。因此,我很困惑我该在哪里做

但它总是导致多个Sqllite db实例

Android中不能有单例类,因为Android Activity类的生命周期甚至进程都与应用程序的生命周期无关,Android可以随时实例化和销毁您的活动。你想写一个博格人而不是单身汉;多个Borg实例应该以蜂群思维进行行为,而不是依赖于只有一个类实例

如何确保该类只有一个实例可用

看来你对单身的定义是错误的。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即可


有关详细描述,您可以阅读我的博客文章

如果没有更多的代码,很难说清楚-到目前为止,我们没有看到您将其实例化一次,更不用说多次了。不幸的是,在此之前从未听说过博格。