从非活动状态更改为活动状态后,LiveData更新

时间:2019-10-22 12:15:37

标签: android android-architecture-components android-livedata

如果在没有活动的LiveData对象观察者的情况下正确理解它,则它不再获得源的更改,例如,它不需要从SQLite(Dao中的LiveData)获得更改。如果它的一个观察者再次处于活动状态,它是首先从源中获取数据还是在等待源中的下一个更改被更新?

编辑: 考虑到这些评论,我认为我应该更准确地解释我的问题。确实,我的问题是关于LiveData本身何时激活。例如,我有以下道:

 @Dao
public interface SampleDao {
…

@Query("SELECT * FROM sampleTable where createdAt > :ceatedAt")
LiveData<List<sampleEntity>> newSampleEntities(Date ceatedAt);
…

}

从newSampleEntities返回的LiveData只有一个观察者,即activity1。假设将sampleEntity1插入到sampleTable中。因此,Livedata通过查询获取它,并将其通知给activity1。如果activity1暂停(调用onPause()),则Livedata不再有任何活动的观察者。因此它变为无效状态,不再重新查询sampleTable。假设从sampleTable中删除了sampleEntity1,并在其中插入了sampleEntity2。由于LiveData尚未更改,因此它具有sampleEntity1。现在,假设activity1恢复,因此Livedata再次变为活动状态。我想知道LiveData何时更新有关sampleTable中的更改的信息。它会在激活之前重新查询sampleTable吗?

1 个答案:

答案 0 :(得分:0)

是的,新观察者会从先前的LiveData值更改中得到通知。