У меня есть Простой 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 для удаления, вставки, обновления?
Ценю любые предложения и советы. Спасибо.