我不清楚如何设置从房间里的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的例子吗?
答案 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
。在将来的版本中,它将成为支持库的一部分。