我有一个应用程序,用户登录到他们的帐户并根据他们的帐户存储数据。用户然后退出他们的帐户并使用另一个帐户登录并根据新帐户存储其他数据。现在如果用户退出新账户并登录到之前的账户,之前的数据必须显示给他。其实每个账号的数据都不应该被删除,只针对同一个账号显示。
我想到的一个解决方案是为每个对象存储一个称为帐户 ID 的字段,并查询它以显示每个帐户的数据。但鉴于每个用户都有大量数据,我认为这是一个昂贵的解决方案。
我尝试的另一种方法是使用帐户 ID 命名每个帐户的数据库。像这样:
object ObjectBox {
lateinit var store: BoxStore
private set
fun init(context: Context, account: String) {
store = MyObjectBox.builder()
.androidContext(context.applicationContext)
.name(account)
.build()
}
}
这样,我BoxStore
每次用户登录时都要初始化:
if (!BoxStore.isDatabaseOpen(context, account))
ObjectBox.init(context, account)
每次用户退出她的帐户时,我都会关闭BoxStore
:
ObjectBox.store.closeQuietly()
但是 ObjectBox 说:
关闭 BoxStore 并释放相关资源。这种方法对单元测试很有用;大多数真实的应用程序应该打开一次 BoxStore 并保持打开状态,直到应用程序终止。警告:如果您有可能仍在使用 BoxStore 的线程正在运行,这是一件有点微妙的事情。这会导致未定义的行为,包括崩溃的可能性。
当我以这种方式使用它时,有时应用程序会崩溃。
有没有另一种方法来分离每个用户的数据?