android - 从 Executor 服务返回数据

标签 android executorservice android-room android-livedata android-jetpack

这是我第一次使用执行器服务。我正在尝试从 ExecutorService 返回数据,但返回类型有问题。目前我正在从我的数据库中获取数据,这是由我的存储库调用并返回的。我正在尝试使用 ExecutorService 来执行此操作。这是我的代码

public LiveData<List<User>> getUsers(int limit) {
    try{
        return mIoExecutor.submit(mDao.getUsers(limit), LiveData<List<User>>)
    }catch (InterruptedException | ExecutionException e){
        e.printStackTrace();
        return null;
    }

}

和我的数据库

 @Query("select * from smiley ORDER BY name, RANDOM() LIMIT :limit")
LiveData<List<User>> getUsers(int limit);

问题是,ExecutorService 要求的是表达式而不是 LiveData>。

最佳答案

必须在那里传递 Runnable 并且我添加了一个秒参数 start,因为 limit 没有用,除非知道从哪里开始从中加载,因为它在分页或寻呼机中很常见。

private MutableLiveData<List<User>> users;

public void getUsers(final int start, final int limit) {
    try {
        this.mIoExecutor.submit((Runnable) () -> {
            List<User> data = mDao.getUsers(start, limit);
            users.postValue(data);
        });
    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    }
}

关于android - 从 Executor 服务返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51937399/

相关文章:

Android Room [SQLITE_ERROR] 使用关系和连接时出现 SQL 错误或缺少数据库

android - 使用安卓设备作为 Remote

android - Android 目录的 MIME 类型

java - Libgdx - 仅动态着色 Sprite 的一部分

java.lang.IllegalStateException : System services not available to Activities before onCreate() When trying to store users location as a variable 错误

java - 我是否需要对不返回我关心的值的 Future 执行 future.get() ?

java - 固定和动态调整工作线程的数量

java - 高效地将无限数量的任务提交到 Java 线程池

java - 房间: Use class that extends ArrayList as Entity

android - Room 是否允许非原始数据类型作为主键?