Android 架构组件房间库 - 如何处理来自 DAO 的实时数据
Android architecture component room library - How to handle livedata from DAO
我不清楚如何设置 return 从 room 中的 dao 编辑的实时数据。让我们看一下 room 中的 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 查询调用。它将 return liveData 对象中的事件列表。这是如何从呼叫者端调用的?任何人都有 observable/flowable 以及普通旧 java 的例子?
如果您直接从 activity 调用,那么您的 activity 必须扩展 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
。更喜欢这个 link 以获得更多详细信息 https://developer.android.com/topic/libraries/architecture/viewmodel.html
注意:在当前的 alpha 版本中 LifecycleActivity
没有扩展 AppCompatActivity
。在未来的版本中,它将成为支持库的一部分。
我不清楚如何设置 return 从 room 中的 dao 编辑的实时数据。让我们看一下 room 中的 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 查询调用。它将 return liveData 对象中的事件列表。这是如何从呼叫者端调用的?任何人都有 observable/flowable 以及普通旧 java 的例子?
如果您直接从 activity 调用,那么您的 activity 必须扩展 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
。更喜欢这个 link 以获得更多详细信息 https://developer.android.com/topic/libraries/architecture/viewmodel.html
注意:在当前的 alpha 版本中 LifecycleActivity
没有扩展 AppCompatActivity
。在未来的版本中,它将成为支持库的一部分。