房间 - LiveData未触发

时间:2017-07-16 16:29:28

标签: java android android-room android-livedata

我正在尝试使用Room数据库&amp; LiveData。 我有ViewModels,它保存了他们从dao获得的LiveData。 如果我更新了Transaction,则LiveData<List<Transaction>>被观察到正常,但完全没有观察到LiveData<Transaction>。怎么可能?我做错了什么?

public abstract class Dao {
    @Query("SELECT * FROM transact WHERE deleted = :value")
    public abstract LiveData<List<Transaction>> allTransactions(boolean value);

    @Query("SELECT * FROM transact WHERE guid = :guid AND deleted = :value ")
    public abstract LiveData<Transaction> getTransaction(String guid, boolean value);

    @Update(onConflict = OnConflictStrategy.REPLACE)
    protected abstract void updateTransaction(Transaction transaction);
}

有类似的问题,当使用非@Singleton注释类时提到Dagger并发症,不幸的是,即使我使用Dagger,也不是我的问题。

2 个答案:

答案 0 :(得分:1)

问题出在AppCompatActivity内,ViewModelLiveData一致。

仅为Fragment调用LiveData观察者,而不是为Activity调用。 我使用AppCompatActivity并实现了LifecycleOwner接口,但正确的是实现LifecycleRegistryOwner

致谢:https://issuetracker.google.com/issues/63764057

答案 1 :(得分:0)

在新版本1.0.0 Alpha 9-1中,Android Developer发布了声明

  

这是核心生命周期工件的主要版本(运行时,   common)和arch core(common)达到稳定版本1.0.0。

     

随着这一变化,支持库26.1.0现在依赖于这些   库。 AppCompatActivity和Support Fragment现在都可以实现   LifecycleOwner界面。

     

此版本还依赖于Support Library 26.1.0来利用   新的整合。

AppCompatActivity和Support Fragment现在都应该在LifecycleOwner接口上实现