【发布时间】:2021-02-04 03:17:28
【问题描述】:
我编写了一个函数来监听我的房间数据库中发生的变化。如果我只想在任何其他时间获取数据而不听取更改,我应该怎么做。
道
@Dao
interface OfflineDataDao {
@Query("SELECT * FROM OfflineData")
fun getOfflineData(): Flow<List<OfflineData>>
class OfflineDatabaseManager private constructor(
private val dp: LibraryDatabase
) {
//LISTENS TO CHANGES IN THE DATABASE
fun getOfflineData(): Flow<List<OfflineData>> {
return dp.getOfflineDataDao().getOfflineData()
}
}
fun getOfflineData() {
launch {
OfflineDatabaseManager.getInstance(app.applicationContext).getOfflineData().collect {
Timber.d("OfflineDataLib - observing offline data" + it.toString())
}
}
}
使用上述函数,我可以监听数据库中的变化,但如果我只想从数据库中获取任何其他点的数据。
请问我该怎么做
更准确地说,我有一个功能可以监听网络变化,如果有网络或没有网络,我想在其中获取离线数据中的数据,我该怎么做。
这是我的监听网络变化的函数
fun listenToConnectionChanges() {
launch {
OfflineDatabaseManager.getInstance(app.applicationContext).networkConnectionActivated
.collect { isNetworkConnectionActive ->
Timber.d("OfflineDataLib - getOfflineData() - isNetworkConnectionActive - " + isNetworkConnectionActive)
if (isNetworkConnectionActive) {
//I WANT TO GET THE DATA FROM THE DATABASE
}
}
}
}
谢谢 回复
【问题讨论】:
-
尝试使用观察实时数据。像这样:db.getinstance.getall.observe(offlinelist -> )
-
使用 Flow 不是正确的方法吗?
标签: android kotlin android-room kotlin-coroutines