因此,我正在创建此应用程序,其中包含大量不应保留在设备中的个人信息和数据,以避免出现安全问题。在了解 Room 时,我遇到了这个 Room.inMemoryDatabaseBuilder()
,正如文档所述:
Creates a RoomDatabase.Builder for an in memory database. Information stored in an in memory database disappears when the process is killed. Once a database is built, you should keep a reference to it and re-use it.
我想知道这是否是适合我的情况的完美用例。由于数据只会存在于内存中,不会存储在设备中。
这似乎是个好主意。我唯一担心的是我还没有在实际应用程序中看到它的实现。我看到此 Room.inMemoryDatabaseBuilder()
的唯一用例是用于测试(因此您不必担心每次测试运行时都会清理数据库)。
有人可以提供一些建议吗?将不胜感激。
非常感谢。
最佳答案
Room.inMemoryDatabaseBuilder()
主要用于测试目的。我永远不会在生产中使用它,因为您不知道进程何时被系统杀死,因此任何超出高级结构化缓存或类似内容的使用可能都不是一个好主意。
我认为您有很多选择可以在不依赖此 API 的情况下解决问题。
您可以使用以下一个或多个选项:
使用 SQLCipher 加密房间数据库并将其存储在应用程序私有(private)文件夹中。
使用 Android Keystore存储私有(private)信息或密码以访问个人信息。
如果设备使用 SafetyNet 获取根权限,则阻止应用程序的某些敏感部分接口(interface)
根本不要将敏感数据存储在数据库中,而是仅在用户明确请求时才在运行时向服务器请求它们。
关于android - 使用 Room.inMemoryDatabaseBuilder() 的完美用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54996339/