我有一个简单的 DAO,包括 CRUD 功能
FeedEntryDAO.java
@Dao
public interface FeedEntryDAO {
@Query("SELECT * FROM feedEntrys")
LiveData<List<FeedEntry>> getAll();
@Query("SELECT * FROM feedEntrys WHERE uid = :uid LIMIT 1")
LiveData<FeedEntry> findByUid(int uid);
@Insert
void insertAll(FeedEntry... feedEntries);
@Delete
void delete(FeedEntry feedEntry);
@Update
int update(FeedEntry feedEntry);
}
对于select
,可以返回 LiveData 类型。
在 Activity 内部,代码非常适合选择
viewModel.getFeedEntrys().observe(this,entries -> {...});
但是,当我尝试插入、更新、删除数据时。代码看起来有点难看,而且每次都会创建一个异步任务。
new AsyncTask<FeedEntry, Void, Void>() {
@Override
protected Void doInBackground(FeedEntry... feedEntries) {
viewModel.update(feedEntries[0]);
return null;
}
}.execute(feedEntry);
我有两个问题:
- 我可以使用 LiveData 来包装删除、插入、更新功能吗?
- 为删除、插入、更新维护这样的异步任务类的更好方法?
感谢任何建议和意见。谢谢你。