Доступ к базе данных номеров из службы и деятельности - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть служба, которая работает в фоновом режиме.Он запускается при загрузке устройства и полностью отделен от активности.

Если я хочу использовать комнату, как мне использовать databaseBuilder?Это нормально, чтобы построить его дважды - для сервиса и приложения?Будет ли он создавать тот же экземпляр базы данных?

1 Ответ

0 голосов
/ 12 февраля 2019

Вы должны предоставить один экземпляр вашей базы данных для всего приложения.Вы можете использовать синглтон для архивирования, например:

@Database(entities = [YourEntity::class], version = 1)
abstract class YourRoomDatabase: RoomDatabase() {

    abstract fun yourDao(): YourDao

    companion object {

        private var INSTANCE: YourRoomDatabase? = null

        fun getInstance(context: Context): YourRoomDatabase {
            if (INSTANCE == null) {
                INSTANCE = Room.databaseBuilder(context, YourRoomDatabase::class.java, "yourdb.db").build()
            }
            return INSTANCE!!
        }

        fun destroyInstance() {
            INSTANCE = null
        }
    }

}

Затем вы можете вызывать его из любого места, как вам нравится:

YourRoomDatabase.getInstance(context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...