Android-异步访问房间数据库的最佳方式
所以我有一个房间数据库,里面存储了一些用户。这是当前我用来访问数据库和获取数据的方法Android-异步访问房间数据库的最佳方式,android,android-asynctask,intentservice,android-room,Android,Android Asynctask,Intentservice,Android Room,所以我有一个房间数据库,里面存储了一些用户。这是当前我用来访问数据库和获取数据的方法 User user; userDAO = AppDatabase.getAppDatabase(getApplicationContext()).userDao(); Thread thread = new Thread(new Runnable() { @Override public void run() { user = us
User user;
userDAO = AppDatabase.getAppDatabase(getApplicationContext()).userDao();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
user = userDAO.getUser("testuser1");
runOnUiThread(new Runnable() {
@Override
public void run() {
String name = user.getName();
}
});
}
});
thread.start();
我的问题是,有没有更好的方法来做到这一点。我在我的活动代码中做这些,我想把它清理干净
您将如何实现一个静态或抽象类之类的东西,该类具有对主线程/活动的回调,以便我可以侦听响应。我还不熟悉异步任务,所以如果我太笨,我道歉
我还需要能够访问数据库从我的服务一直在运行。此外,有时在调用OnDestroy()方法时,我需要保存一些数据,如果从那里运行线程,则会导致崩溃。也许是一种服务?但是我需要能够调用不同的方法来获取和保存不同的对象 在AppDatabase类中,必须使用以下代码:
@Database(entities = {User.class},version = 1)
public abstract class AppDatabase extends RoomDatabase
{
public abstract userDAO userDao();
}
在UserDAo类中,必须使用以下代码:
@Query("select * from User where user =:search")
User getUser(String search);
User user;
public static AppDatabase database=null;
if (database==null)
{
database= Room.databaseBuilder(getApplicationContext(),AppDatabase.class,"nameOfDatabase")
.allowMainThreadQueries().build();
}
user=database.userDao.getUser("testuser1");
要使用这些方法,您可以使用以下代码:
@Query("select * from User where user =:search")
User getUser(String search);
User user;
public static AppDatabase database=null;
if (database==null)
{
database= Room.databaseBuilder(getApplicationContext(),AppDatabase.class,"nameOfDatabase")
.allowMainThreadQueries().build();
}
user=database.userDao.getUser("testuser1");
您正在主线程上的主线程上查询数据库,这与异步访问房间数据库的最佳方式是什么?