Android 如何指定要运行的线程室实时查询?
我的应用程序中有一个类,包含磁盘/网络操作的执行器,如。是否可以告诉Room使用其中一个来执行实时查询?如果使用LiveData,则无需使用执行器来选择数据。因为LiveData在默认情况下是从UI线程运行的Android 如何指定要运行的线程室实时查询?,android,android-room,android-architecture-components,Android,Android Room,Android Architecture Components,我的应用程序中有一个类,包含磁盘/网络操作的执行器,如。是否可以告诉Room使用其中一个来执行实时查询?如果使用LiveData,则无需使用执行器来选择数据。因为LiveData在默认情况下是从UI线程运行的 executor. mainThread().execute(...runnable...); 不过,插入、更新和删除都需要它 你可以这样使用,我想: executor.diskIO().execute(...runnable...); // recommended for db
executor. mainThread().execute(...runnable...);
不过,插入、更新和删除都需要它
你可以这样使用,我想:
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
另一方面,这个类不能用于db查询,因为它在UI线程上运行(查看私有内部类)。这将无法实现让db查询在UI线程之外运行的目的。它适用于您需要在UI线程中的特定用例
executor. mainThread().execute(...runnable...);
综上所述:
- 使用LiveData时,在执行select语句时不需要执行器
- 对于插入、删除、更新或非LiveData对象,您需要在UI线程外运行查询
- 在这种情况下,您必须使用
executor.diskIO().execute(newrunnable(){…})代码>