[英]Android: clean architecture with Room database and LiveData in DAO
[英]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.