gpt4 book ai didi

android - 如何指定运行实时查询的线程?

转载 作者:搜寻专家 更新时间:2023-11-01 09:25:49 26 4
gpt4 key购买 nike

我的应用程序中有一个类,其中包含用于磁盘/网络操作的执行程序,例如 this .是否可以告诉 Room 使用其中一个来执行实时查询?

最佳答案

如果您使用 LiveData,则无需使用 Executor 来选择数据。因为默认情况下,LiveData 会在 UI 线程之外运行。

尽管插入、更新和删除都需要它。

我认为你可以像这样使用它:

executor.diskIO().execute(...runnable...);    // recommended for db actions
executor.networkIO().execute(...runnable...); // not recommended for db because a pool of 3 threads can run concurrently, could yield issues

另一方面,这个不能用于数据库查询,因为它在 UI 线程上运行(查看私有(private)内部类)。这将破坏让数据库查询脱离 UI 线程的目的。它适用于您需要在 UI 线程中的特定用例。

executor. mainThread().execute(...runnable...); 

总结一下:

  • 当使用 LiveData 时,执行 select 语句时不需要执行器
  • 对于插入、删除、更新或非 LiveData 对象,您需要在 UI 线程之外运行查询
  • 在那种特定情况下,您必须使用executor.diskIO().execute(new Runnable() {...});

关于android - 如何指定运行实时查询的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50782496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com