Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Room-如何仅获取新数据?_Android_Rx Java_Android Room_Rx Android_Android Diffutils - Fatal编程技术网

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提供的分页库),则可以提高应用程序的效率