如何使Singleton Database类将数据写入Sqlite db?

时间:2013-09-08 03:51:53

标签: android

即使我创建了一个静态类来保存数据库帮助程序实例,我也很困惑我在哪里实例化该类。我如何确保只有一个类的实例可用?

我想说的是,我对哪些活动感到困惑,我应该如何设置类以使其保持一个实例?

不确定为什么会掉线。

最初,我有一个

public class DbStaticClass {

    public static LinkDataHandler sqlDataHandler = null;
}

我在Splashscreen初具观念,因为那是参赛活动。但它总是导致Sqllite db的多个实例。因此,我很困惑我在哪里做?

2 个答案:

答案 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