-3

尽管我创建了一个静态类来保存数据库助手实例,但我对在哪里实例化该类感到困惑。我如何确保只有一个类的实例可用?

我的意思是,我对哪个活动感到困惑,我应该如何建立类以使其保持一个实例?

不知道为什么反对票。

最初,我有一个

public class DbStaticClass {

    public static LinkDataHandler sqlDataHandler = null;
}

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

4

2 回答 2

1

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

在Android中不能有Singleton类,因为AndroidActivity类(甚至Process)的生命周期与Application的生命周期无关,Android可以随时实例化和销毁你的Activity。你想写一个 Borg 而不是 Singleton;与其依赖于只有一个类的实例,多个 Borg 实例应该以蜂巢思维行事。

于 2013-09-08T04:06:07.310 回答
0

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

看来您以错误的方式定义单例。单例本身确保只有一个类的实例可用。正确的做法是:

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()

有关详细说明,您可以在此处阅读我的博客条目

于 2013-09-08T06:20:44.287 回答