Android架构组件室库 - 如何处理来自DAO的livingata

时间:2017-06-05 00:18:13

标签: android android-room android-livedata

我不清楚如何设置从房间里的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对象中的事件列表。如何从呼叫者那里调用?任何人都有一个带有observable / flowable和普通旧java的例子吗?

1 个答案:

答案 0 :(得分:3)

如果您通过直接活动致电,则您的活动必须延长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。在将来的版本中,它将成为支持库的一部分。