如何使用列表中的异步任务从 android 中的 table 房间获取所有数据

How to get all data from room table in android using async Task in a List

我想从 Android 的 Room 数据库中获取 List<Model>,而不使用 LiveData。 如何使用 asynctaskthread 函数获取所有行。

首先在您的 DAO 中定义 get 方法,假设您正在获取所有用户:

用户模型:

@Entity
public class UserModel {
    @PrimaryKey
    public int id;

    public String first_name;
    public String last_name;
}

用户数据访问对象

@Dao
public interface UserDao {
    @Query("SELECT first_name, last_name FROM user")
    public List<UserModel> getAllUsers();
}

创建您的应用程序数据库包装器class

@Database(entities = {UserModel.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
    public abstract UserDao userDao();
}

使用以下代码访问数据库

public class UserServices{

        private AppDatabase db ;

        public UserServices(){
            db = Room.databaseBuilder(getApplicationContext(),
                    AppDatabase.class, "database-name").build();
        }

        public List<UserModel> getAllUsers(){
            return new GetUsersAsyncTask().exicute().get();
        }


        private class GetUsersAsyncTask extends AsyncTask<Void, Void,List<UserModel>> 
        {
            @Override
            protected Void doInBackground(Void... url) {
                return db.getUserDao().getAllUsers();
            }
        }
    }

现在通过调用

访问用户
UserServices userServices=new UserServices();
List<UserModel> users=userServices.getAllUsers();