使用Room而不是singleton

时间:2019-03-02 03:51:56

标签: android android-room

在Android Room文档中,我注意到Room lib有一个名为rspec . --tag=~io_bound # runs all specs NOT tagged as io bound (all your other tests) 的生成器:

  

为内存数据库创建RoomDatabase.Builder。信息   当进程被杀死时,存储在内存数据库中的数据将消失。   建立数据库后,您应该保留对其的引用并重新使用   它。

我曾经使用单例将会话对象保留在内存中,却从未使用过Room for inMemory数据库,我的问题是: 使用Room代替Singleton将会话数据存储在内存中是一个好习惯吗? 辛格尔顿根本是个坏习惯吗? 我需要内存,因为此会话数据仅在用户使用应用程序时使用,如果应用程序被杀死,则该会话数据将无法持久保存...

1 个答案:

答案 0 :(得分:1)

如果数据是结构化的,并且需要以不同的方式(顺序或过滤)进行检索,那么使用SQLite内存数据库是个好主意。

请记住,Room数据库也应作为单例构建,因为在多线程情况下必须对数据库访问进行“管理”。

记住要在onCreate类的Application方法中创建它。