Android Room-如何仅获取新数据?
在数据库中插入一些Android Room-如何仅获取新数据?,android,rx-java,android-room,rx-android,android-diffutils,Android,Rx Java,Android Room,Rx Android,Android Diffutils,在数据库中插入一些消息后,此Dao方法的结果是什么: @Query("SELECT * FROM messages") Flowable<List<Message>> getMessages(); @Query(“从消息中选择*) 可流动的getMessages(); 1-此更改后,将发出存储在数据库中的所有消息 或 2-只有差异信息在更改后才会发出新的和旧的信息s 在哪些文件中有规定?如果是第一种,我应该做些什么来获得差异——比如DiffUtils或者其他方法 另外
消息后,此Dao
方法的结果是什么:
@Query("SELECT * FROM messages")
Flowable<List<Message>> getMessages();
@Query(“从消息中选择*)
可流动的getMessages();
1-此更改后,将发出存储在数据库中的所有消息
或
2-只有差异信息在更改后才会发出新的和旧的信息
s
在哪些文件中有规定?如果是第一种,我应该做些什么来获得差异——比如DiffUtils
或者其他方法
另外,如果我删除一些消息怎么办
所有存储在数据库中的消息都将发出
要获得差异,建议使用您提到的方法。关于它如何工作以及如何实现,有很多信息。这里只提几个你有这个
如果不想在每次更改某些消息时都获取所有消息,可以编写不同的查询。这取决于您的用例,但是,例如,如果您知道旧消息不会更改,您可以使用一个查询返回特定日期之后的所有消息
如果您删除了一些消息,查询结果将更改。因此,您将再次发出所有消息李>
我会使用LiveData
。行为是相同的,您不需要担心处理订阅,也不需要担心配置更改。但是,当您必须返回单个结果时,我会使用Single
或Maybe
更新:您可以检索消息的子集并根据需要进行更新,而不是使用DiffUtils获取所有消息并查看它们之间的差异。新的帮助你做到这一点。同样,关于如何实现这一点,有很多信息,所以我不打算在这里介绍实现的细节,因为这超出了问题的范围,但这里您可以使用
所有存储在数据库中的消息都将发出
要获得差异,建议使用您提到的方法。关于它如何工作以及如何实现,有很多信息。这里只提几个你有这个
如果不想在每次更改某些消息时都获取所有消息,可以编写不同的查询。这取决于您的用例,但是,例如,如果您知道旧消息不会更改,您可以使用一个查询返回特定日期之后的所有消息
如果您删除了一些消息,查询结果将更改。因此,您将再次发出所有消息李>
我会使用LiveData
。行为是相同的,您不需要担心处理订阅,也不需要担心配置更改。但是,当您必须返回单个结果时,我会使用Single
或Maybe
更新:您可以检索消息的子集并根据需要进行更新,而不是使用DiffUtils获取所有消息并查看它们之间的差异。新的帮助你做到这一点。同样,关于如何做到这一点,有很多信息,所以我不打算在这里介绍实施的细节,因为这超出了问题的范围,但是这里您可以使用。如果所有消息都将被发出,并且DiffUtils
不会改变这种情况,那么可能会导致大量无用的内存消耗…@isabsent true,但是如果您继续使用该查询,则没有其他选择。但是,如果您通过使用附加参数(在特定日期之后获取消息)限制查询结果,或者更好地使用分页策略(您可以使用android提供的分页库),则可以提高应用程序的效率如果所有消息都将被发出,并且DiffUtils
不会改变这种情况,则可能会导致大量无用的内存消耗…@isabsent true,但如果继续使用该查询,则没有其他选择。但是,如果您通过使用附加参数(在特定日期之后获取消息)限制查询结果,或者更好地使用分页策略(您可以使用android提供的分页库),则可以提高应用程序的效率