我有一个DAO,如下所示。如何使用体系结构组件观察数据库删除事件
@Dao
public interface PostDAO {
@Query("SELECT * FROM posts order by time DESC")
LiveData<List<Post>> getPosts();
@Insert(onConflict = OnConflictStrategy.REPLACE)
@NonNull
void insert(Post... posts);
@Delete
void delete(Post post);
@Query("SELECT * FROM posts WHERE id = :id")
Post getPost(String id);
@Query("SELECT * FROM posts WHERE id = :id")
LiveData<Post> getPostLiveData(String id);
}
据我所知,我可以听到新的数据,如下所示。
postDAO().getPosts().observe(builder.getLifecycleOwner(), data::postValue)
但是如何知道帖子何时被删除?
您在关于使用Single进行编辑之前的答案可以在评论中详细说明。 – Raghunandan
不知道你的意思是:-)你可以使用某种DiffUtil(或者为此提供的Android助手)检查更改,或者使用通过使用另一个MutableLiveData <>发布的尝试改变。取决于用例。如果你有一个“大”列表,使用新的LiveData对象的方法是最好的方法。 –
鼓励通过setValue()使用“DiffUtil例程”是否明智?我一直在使用data.setValue(),虽然后,但有些东西是不正确的。 – Relm