У меня есть простой 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);
У меня есть 2 вопроса об этом:
- Могу ли я использовать LiveData для переноса функции удаления, вставки, обновления?
- Лучший способ поддерживать такой класс asynctask для удаления, вставки, обновления?
Ценю любые предложения и советы. Спасибо.