背景
我有多种方法从服务器获取数据,例如后台轮询和服务器推送。这些项目可能包含相同的项目。当数据准备就绪时,我将这些数据插入到Android Room的数据库中。当插入项目存在于数据库中时,我将中止该项目。我期望在这些数据插入成功时获得通知,所以我在Dao中使用了livedata:
@Dao
public interface WordDao {
@Query("SELECT * from word_table where isNew = 0")
LiveData<List<Word>> getAlphabetizedWords();
@Insert
void insert(List<Word> word);
@Update
void update(List<Word> words);
}
在application
代码中:
@Override
public void onCreate() {
super.onCreate();
wordRepository = WordRepository.getInstance(this);
wordRepository.getAllWords().observeForever(new DatabaseObserver(this));
}
在DatabaseObserver
中,我收到数据更改通知。我将处理这些数据,然后我将设置该类的一个属性(设置isNew = 1
)以指示该项已被处理。同时,该句柄保持后面的插入不会通知旧的插入数据。
我的问题
observeForever()
的模式是否会按预期工作?DatabaseObserver
&#39; onChanged
方法接收相同的项目列表。在我更改我的代码this之后,问题仍然存在。如何解决这个问题?