Я попытался реализовать приложение с несколькими аккаунтами, используя базу данных ROOM. Итак, я решил создать объект базы данных ROOM для каждого пользователя, например:
val appDatabaseName = "myapp" + getUserUin()
AppDatabase appDatabase = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, appDatabaseName).build()
Global.setAppDatabase(appDatabaseName)// using this object for later transactions
Когда пользователь пытается выйти из системы или сменить учетную запись, я позвонил:
Global.getAppDatabase().close() // try to close the ROOM object
Затем повторите тот же процесс для сохранения объекта комнаты при успешном входе пользователя. Но иногда он приходит с
java.lang.IllegalStateException: Cannot perform this operation because the connection pool has been closed.
Но я понятия не имею, почему это происходит.
Так что мне интересно,
- Должен Я закрываю объект «База данных комнат» после выхода пользователя из системы / переключения учетной записи? Могу ли я предоставить системе закрыть все созданные мной объекты Room?
- Если я не могу, как мне разрешить это исключение?