在 Android Room 库中使用 Singleton

2024-01-15

我总是被告知使用 Singleton 很糟糕。然而,Android Room 实现的每个示例似乎都使用 Singleton 方法。有人可以解释一下为什么会这样吗?

Thanks


有两种方法

1)你应该使用匕首2

2)抽象 RoomDatabase 类中的 make 方法,该类提供类的对象

Example:

@Database(entities = { Repo.class }, version = 1)
public abstract class RepoDatabase extends RoomDatabase {

    private static final String DB_NAME = "repoDatabase.db";
    private static volatile RepoDatabase instance;

    static synchronized RepoDatabase getInstance(Context context) {
        if (instance == null) {
            instance = create(context);
        }
        return instance;
    }

private RepoDatabase() {};

    private static RepoDatabase create(final Context context) {
        return Room.databaseBuilder(
            context,
            RepoDatabase.class,
            DB_NAME).build();
    }

    public abstract RepoDao getRepoDao();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android Room 库中使用 Singleton 的相关文章

随机推荐

  • 如何使用带模板的结构和类

    使用此代码 只是一类测试 typedef unsigned short UInt16 template
  • 获取 Java 中自纪元以来的天数、周数和月数

    我正在尝试获取自 Java 纪元以来的天数 周数 月数 Java Calendar 类提供了诸如calendar get Gregorian Calendar DAY OF YEAR 或Calendar get Gregorian Cale
  • 在 iPhone 应用程序中记录调试信息的最佳方法是什么?

    是否有某种标准方法或有人写过一些东西 允许您记录消息并将其显示在 iPhone 屏幕上的小滚动部分或 iPhone 模拟器中的单独窗口中 更新 对于像我这样不知道的菜鸟 请使用如下所述的 NSLog 方法 并确保选择 Run gt Cons
  • Unicorn 不关闭数据库连接

    我正在使用 Rails 3 2 unicorn postgres DB 我有一个问题 unicorn 如何处理数据库连接 我的理解是 unicorn主进程分叉X子进程 每个子进程建立数据库连接 在before fork中关闭 在after
  • uitableview + 导航控制器从所选元素设置标题

    我有一个UINnavigationController处理导航UITableView 当我从表中选择一行时 我需要显示在UINavigationController为上一个菜单中选定的项目添加标题 细胞的标签是从外部读取的xml填充的行UI
  • 在搜索表单中 POST 或 GET?

    我创建了一个搜索表单来查找 MVC 网站上的帖子 表单类型应该是 POST 还是 GET 我知道正在获取可以为搜索添加书签等等 使用 GET 有什么缺点吗 谢谢你 米格尔 虽然GET是更传统的数据查询解决方案 在很多情况下GET太有限 无法
  • 刚刚从 IPython 提示符安装后出现“没有名为 sqlalchemy 的模块”

    我无法导入 sqlalchemy 我搜索并发现了一些解决方案 例如安装flask或flask sqlalchemy等 这些都没有帮助 我缺少什么 有时 您需要重新启动ipython让它找到新安装的模块 我相信这适用于添加到的模块sys pa
  • 您的CPU不支持VT-x

    我已经创建了 AVD 但是当我尝试运行 android 程序时 它显示 错误 您的CPU不支持VT x 我在 BIOS 中启用了虚拟化技术 但当我尝试运行 Android 程序时仍然出现此错误 有两种情况 使用VMware 进入 WM gt
  • 部分回发后 jQuery 不工作

    我在外部文件中有下面这个 jquery 函数 因此 在部分回发后 jquery 无法正常工作 我需要在部分回发时从服务器端加载 jquery 有人可以告诉我我需要在这段代码中调用什么以及如何加载jquery jQuery function
  • 获取 Domino 服务器会话超时 - XPage

    如何在 XPages SSJS 中获取 Domino 服务器的会话超时 我想提示用户在会话过期之前保存他 她的数据 谢谢 仅当用户向服务器发出请求时 服务器才与用户通信 因此 如果用户没有请求 服务器就无法向用户发送信息 例如 用户从服务器
  • 如何在 Android 运行时更改当前主题 [重复]

    这个问题在这里已经有答案了 我创建了一个 PreferenceActivity 允许用户选择他想要应用于整个应用程序的主题 当用户选择主题时 将执行以下代码 if getApplication setTheme R style BlackT
  • 如何在 Azure 应用服务中插入具有 1:n 关系的实体

    我需要使用 Azure 应用服务建立 1 n 关系 我按照这个教程 http shellmonger com 2016 05 27 30 days of zumo v2 azure mobile apps day 26 relationsh
  • 使用压缩生成的损坏的 docx

    首先我要说的是 我在这里创建了一个帐户 因为为了尝试解决这个问题 我一直在用头撞墙 所以就这样吧 另外 我已经看到这个问题了here https stackoverflow com questions 13566468 how to com
  • 在 Android 中的自定义视图上添加按钮

    我有以下课程 public class GameActivity extends Activity Override public void onCreate Bundle savedInstanceState super onCreate
  • Android 本机库链接到 aar 中的另一个本机库

    我有一个好奇的问题 我有一个 aar 库 其中包含并使用本机 so 库 现在 我想编写另一个库 它依赖于该库 并且还具有依赖于第一个库中的本机库的本机部分 依赖库同时使用第一个库中的本机代码和 java 包装器 我想知道 有什么办法 如何通
  • JSP编程-response.getWriter().flush();不起作用

    预期结果 浏览器中显示 Hello World 10秒后 幸福再见 被展示 发生了什么 页面加载了 10 秒钟 然后最后显示 Hello World Goodbye Happiness 我想要做的是显示长时间运行的操作在达到不同里程碑时的状
  • 根据使用 applescript 的内容和最佳实践,在终端中选择特定选项卡

    这是一个特定于应用程序的问题 我试图根据其中的内容在 Terminal app 中查找并选择一个选项卡 这是我正在做的事情 tell application Terminal set foundTabs to every tab of ev
  • Swing 组件的单元测试

    我正在编写一个类似 Total Commander 的应用程序 我有一个单独的文件列表组件及其模型 模型支持侦听器并发出事件通知 例如CurrentDirChanged等方式如下 private void fireCurrentDirect
  • “stat_smooth()”计算失败:找不到对象“C_crspl”

    我正在尝试添加一个geom smooth to a qplot 使用以下代码 library ggplot2 library ggplot2movies qplot votes rating data movies geom smooth
  • 在 Android Room 库中使用 Singleton

    我总是被告知使用 Singleton 很糟糕 然而 Android Room 实现的每个示例似乎都使用 Singleton 方法 有人可以解释一下为什么会这样吗 Thanks 有两种方法 1 你应该使用匕首2 2 抽象 RoomDataba