【问题标题】:android - room database connection in Model class android architectureandroid - Model 类 android 架构中的房间数据库连接
【发布时间】:2019-04-28 04:52:21
【问题描述】:

我是 MVVM 的新手,我也在使用 android 架构组件。

这是我的代码,我已经编写了在线部分,现在我正在处理需要使用房间数据库的离线部分。

这是我的模型类代码:

    class CategoryModel(
    private val netManager: NetManager,
    private val sharedPrefManager: SharedPrefManager
) {
    var dateChanges: String = "null";

private lateinit var categoryDao: CategoryDao
private lateinit var dbConnection: DbConnection

fun getCats(): MutableLiveData<MutableList<Cat>> {
    var list = MutableLiveData<MutableList<Cat>>();

    if (netManager.isConnected!!) {
        list = getCatsOnline();
    } else {
        list= getCatsOffline();
    }
    return list
}

这是 DbConnection 类:

@Database(entities = arrayOf(Cat::class), version = 1)
abstract class DbConnection : RoomDatabase() {
    abstract fun CategoryDao(): CategoryDao

companion object {
    private var INSTANCE: DbConnection? = null

    fun getInstance(context: Context): DbConnection? {
        if (INSTANCE == null) {
            synchronized(DbConnection::class) {
                INSTANCE = Room.databaseBuilder(
                    context.getApplicationContext(),
                    DbConnection::class.java, Const.db_Name
                ).build()
            }
        }
        return INSTANCE
    }

    fun destroyInstance() {
        INSTANCE = null
    }
}

问题是这样的,我需要与房间数据库建立连接,它需要上下文。

我怎样才能建立这种联系?如何从模型类访问数据库?

【问题讨论】:

    标签: android android-room android-architecture-components android-viewmodel android-mvvm


    【解决方案1】:

    如果您不想要与应用程序相关的模型,获取应用程序的简单方法,

    首先实现你自己的应用程序

    class BaseApp : Application() {
        companion object{
            lateinit var INSTANCE:Application
        }
        override fun onCreate() {
            super.onCreate()
            INSTANCE = this
        }
    }
    

    第二次使用它:

    DbConnection.getInstance(BaseApp.INSTANCE)
    

    别忘了在 AndroidManifest 中定义 BaseApp:

    <application
        android:name=".BaseApp"
        ...>
        ...
    </application>
    

    【讨论】:

      猜你喜欢
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 2021-08-13
      相关资源
      最近更新 更多