java - 安卓/Java : accessing the same SQLite DB object from multiple activities

标签 java android database class

我的应用程序中有一个中央数据库,一些不同的 Activity 需要访问它。

我应该通过将其设为静态来共享该对象吗?例如,在初始化数据库的 Activity 中,我这样做:

protected static appDatabase db;

然后其他人可以通过FirstActivity.db 访问它。

另一种选择是在每个需要它的 Activity 中创建 private appDatabase db 对象,但我怀疑打开多个 db 对象来访问相同的存储数据可能是一种浪费。

但是我对 java 了解不多,这就是为什么我要问的原因 - 执行此操作的首选方法是什么,为什么?

谢谢

最佳答案

你可以像这样使用单例;

    private static DataHelper singleton;

    public static DataHelper getDataHelper(Context context) {
            if (singleton == null) {
                    singleton = new DataHelper(context);
                    OpenHelper openHelper = new OpenHelper(singleton.context);
                    singleton.db = openHelper.getWritableDatabase();
            }
            if(!singleton.db.isOpen()){
                    OpenHelper openHelper = new OpenHelper(singleton.context);
                    singleton.db = openHelper.getWritableDatabase();
            }
            singleton.context = context;
            return singleton;
    }

    private DataHelper(Context context) {
        this.context = context;
}

然后像这样调用你的单例类;

public DataHelper dh;
this.dh = DataHelper.getDataHelper(this);

关于java - 安卓/Java : accessing the same SQLite DB object from multiple activities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14185932/

相关文章:

java - 从 JtextField 获取值到另一个类

java - Android - 从 USB 接收佳能(相机)事件

android - E/回收站 View : No adapter attached; skipping layout (Using FRAGMENTS)

java - 从服务器下载图像到android并在imageview中显示

mysql - 如何在我的 Go 程序中运行测试之前获取数据库模式

database - AFTER LOGON ON DATABASE 触发器是否在多个数据库实例上执行?

java - 如何将 double 舍入到最接近的偶数

java - 如何将文件从 Windows 服务器路径复制/传输到 Linux 服务器路径?

java - GraphicsConfiguration 在 Java 中代表什么?

java - log4j spring jdbc异常