Какое лучшее решение для доступа к базе данных Android комната с несколькими интерфейсами? - PullRequest
2 голосов
/ 08 июля 2019

У меня есть база данных из библиотеки, которую я не хочу изменять, но мне нужен доступ к этой базе данных.И эта библиотека уже реализована с интерфейсом для доступа к комнате БД с liveata и viewmodels.При доступе к БД Android-комнаты требуется интерфейс. (Согласно документации, он должен расширять "RoomDatabase"). Но проблема в том, что из-за этой библиотеки я не могу получить доступ к БД через интерфейс.Поэтому я планирую создать другой интерфейс (расширяет RoomDatabase) для доступа к этой БД.Я не уверен, но я думаю, что это не общий способ использования базы данных комнаты.Могут ли возникнуть какие-либо критические проблемы, если я воспользуюсь подобным образом или любым другим способом решения этой проблемы?

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

По моему мнению, вы можете создать класс BaseDatabase, который будет расширять RoomDatabase

 // Base Database class
 public abstract class BaseDatabase extends RoomDatabase {

 }

// create your class that extends BaseDatabase
@Database(..)
public abstract class AppDatabase extends BaseDatabase {

}
0 голосов
/ 08 июля 2019

Я думаю, что вы должны использовать фабрику с единичным экземпляром внутри вашей базы данных. Таким образом, вы можете получить доступ к вашей БД везде, не создавая никаких дополнительных экземпляров БД.

Это мой код с использованием Kotlin, но я думаю, что идеи совпадают в Kotlin и Java

@Database(entities = [Address::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun addressDao(): AddressDao

    companion object{
        private var INSTANCE: AppDatabase? = null

        fun getInstance(context: Context) = INSTANCE ?:
        Room.databaseBuilder(context, AppDatabase::class.java, "MyDatabaseName")
            // .allowMainThreadQueries()
            .build().also { INSTANCE = it }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...