android - 如何使用数据库制作Android单例和自定义数据类?

标签 android sqlite

我想使用单例模式来保存我的 Android 应用程序的数据库和其他一些数据/方法。

我意识到反对单例的原因有很多,但对于本例我想使用它。

我对 UIApplication 进行了子类化,并在其中创建了一个名为 MyAppData 的数据类。

MyAppData 需要访问 SQLite 数据库。

当我创建数据库时,我需要传递一个上下文。我可以传递应用程序上下文,但它不会直接与 MyAppData 相关。

我不知道这是否会导致我的代码出现问题。

所以我的想法是让 MyAppdata 扩展 android.content.ContextWrapper。我认为我不应该扩展 Activity,因为它实际上不是一个 Activity,而是一个具有访问数据库方法的数据类。

我想知道如果我扩展 ContextWrapper ,代码中是否会缺少一些深层的东西,这些东西会导致以后出现大问题(内存泄漏等)。

这可能不是理想的方法(我已经考虑过其他选择),但我的目标是:

在 UIApplication 中有一个单例类,它可以封装数据库并可以从我的应用程序中的任何 Activity 中轻松检索。

预先感谢您的建议/警告/忠告。

最佳答案

子类android.database.sqlite.SQLiteOpenHelperandroid.app.Application(后者在AndroidManifest.xml中正确声明) .
现在,

public class MyApplication extends Application {

    private static SQLiteOpenHelper openHelper;

    @Override
    public void onCreate() {
        super.onCreate();
        openHelper = new DbManager(this);
        //
    }

    public static SQLiteDatabase getDB() {
        return openHelper.getWritableDatabase();
    }
}

然后有辅助 DAO 类来执行插入/更新/等。
这就是我在所有应用程序中使用的内容。

关于android - 如何使用数据库制作Android单例和自定义数据类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3273107/

相关文章:

android - 在 ListView 中显示 sdcard 文件夹中的视频文件

java - Android SetText 在 OkHttp 异步回调中导致崩溃

SQLite - 获取排序/过滤查询的特定行索引

java - Android - 将 fragment 添加到 xml 布局时出错

java - 如何在android web View 中显示html5页面

android - 如何将 FAB 对齐到布局边框顶部

Android getColumName 和 getColumnIndex

iphone - 将值插入 sqlite 数据库

android - 我正在使用 SQLCIPHER 读取或写入数据库时​​出错

Java - 数据库锁定