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

问题描述 投票:0回答:1

如果在没有活动的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吗?

android android-architecture-components android-livedata
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.