如何设置应用程序级别的liveata观察者模式

时间:2018-04-01 11:14:24

标签: android android-room android-livedata

背景

我有多种方法从服务器获取数据,例如后台轮询和服务器推送。这些项目可能包含相同的项目。当数据准备就绪时,我将这些数据插入到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)以指示该项已被处理。同时,该句柄保持后面的插入不会通知旧的插入数据。

我的问题

  1. 使用observeForever()的模式是否会按预期工作?
  2. 当我编写演示代码时,我遇到DatabaseObserver&#39; onChanged方法接收相同的项目列表。在我更改我的代码this之后,问题仍然存在。如何解决这个问题?

0 个答案:

没有答案