簡體   English   中英

Room DAO 不斷返回 NULL

[英]Room DAO keeps returning NULL

room中,我有一個 dao 是這樣的:

@Dao
interface FacultyDao {
    @Query("select * from faculty")
    fun getAll(): LiveData<List<Faculty>>
  
    ...
}

在存儲庫中,我只是調用此方法並記錄它:

class FacultyRepository(application: Application) {

    private val facultyDao: FacultyDao

    init {
        val db: AppDB = AppDB.getInstance(application)
        facultyDao = db.facultyDao()
    }

    fun getAllFaculty(): LiveData<List<Faculty>> {
        val v = facultyDao.getAll()
        Log.d("muaxx", v.value.toString())
        return v
    }
     ...

}

但問題是它返回給我null但是當我在檢查器中運行該查詢時它起作用了。 我錯過了什么嗎?

在此處輸入圖像描述

在此處輸入圖像描述

LiveData 不會立即具有初始值。 Room 查詢數據庫並在后台線程上獲取結果。 然后在主線程的下一個循環中,LiveData 的value將設置為此檢索到的值。 您過早記錄value 初始值將在未來某個時間出現,在這個 function 已經返回之后。

通常你應該只通過觀察它來獲得一個 LiveData 值。

直接檢查value通常只應在您管理 MutableLiveData 並使用先前的值來幫助確定您要發布的下一個值時進行。

實時數據為我們提供了實時數據。 所以,第一次,你自己還是沒有一些。 它正在等待數據庫的響應。 如果你想看到一些實時數據,你必須觀察它,以便在收到信息后,觀察者會被調用並記錄信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM