簡體   English   中英

Android架構組件室庫 - 如何處理來自DAO的livingata

[英]Android architecture component room library - How to handle livedata from DAO

我不清楚如何設置從房間里的dao返回的實時數據。 讓我們看看房間里的DAO示例:

    @Dao
public interface EventDao {

   @Query("SELECT * FROM " + Event.TABLE_NAME + " WHERE " + Event.DATE_FIELD + " > :minDate limit 1")
   LiveData<List<Event>> getEvents(LocalDateTime minDate);

   @Insert(onConflict = REPLACE)
   void addEvent(Event event);

   @Delete
   void deleteEvent(Event event);

   @Update(onConflict = REPLACE)
   void updateEvent(Event event);

}

特別是,我想看看getEvents查詢調用。 它將返回liveData對象中的事件列表。 如何從呼叫者那里調用? 任何人都有一個可觀察/可流動以及普通舊Java的例子?

如果您通過直接活動進行呼叫,那么您的活動必須擴展LifecycleActivity

並寫下面的代碼。

db.getEventDao().getEventList().observe(this, new Observer<List<Event>>() {
    @Override
    public void onChanged(@Nullable List<Event> events) {
        // update your UI.
    }

實時數據具有生命周期意識。 所以實時數據需要知道生命周期。 所以這里的observe方法第一個參數需要LifecycleOwner的參數,它來自LifecycleActivity

如果您不想使用LifeCycleActivity則必須使用ViewModel 更喜歡此鏈接以獲取更多詳細信息https://developer.android.com/topic/libraries/architecture/viewmodel.html

注意:在當前的alpha版本中, LifecycleActivity不會擴展AppCompatActivity 在將來的版本中,它將成為支持庫的一部分。

暫無
暫無

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

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