我最近正在尝试学习Android,并且对后端知识(例如,线程和东西。我弄清了Room并尝试将其与前端组件集成。因此,我不担心前端如何调整我要呈现的数据。我遇到了问题,因为我是新手,所以尝试使用线程以干净的方式设计和实现集成并尝试实现线程。
这是我的代码。
Database.class
@Database(entities = {Groups.class, Member.class}, version = 1, exportSchema
= false)
public abstract class DatabaseConfig extends RoomDatabase {
private static final String DATABASE_NAME = "db";
private static DatabaseConfig INSTANCE;
public abstract GroupDao groupDao();
public abstract MemberDao memberDao();
public static DatabaseConfig getDatabase(final Context context) {
if (INSTANCE == null) {
synchronized (DatabaseConfig.class) {
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context.getApplicationContext(),
DatabaseConfig.class, DATABASE_NAME)
.addCallback(DatabaseCallBack)
.build();
}
}
}
return INSTANCE;
}
private static RoomDatabase.Callback DatabaseCallBack =
new RoomDatabase.Callback(){
@Override
public void onOpen (@NonNull SupportSQLiteDatabase db){
super.onOpen(db);
}
};
}
GroupRepo.class
public class GroupRepo {
private final GroupDao groupDao;
//ExecutorService es = Executors.newSingleThreadExecutor();
public GroupRepo (Context context){
DatabaseConfig db = DatabaseConfig.getDatabase(context);
groupDao = db.groupDao();
}
public List<Groups> getAllGroups(){
/*
So my idea is to have some sort of threading implement from here
and use executor.run() to run my query and capture data
*/
}
}
Groups.class
@Dao
public interface GroupDao {
@Query("SELECT * from groups")
List<Groups> getAllGroups();
@Query("Select * from groups where groups.id = :groupsId")
GroupAllMembers getAllMember(int groupsId);
@Insert
void insert(Groups... groups);
@Delete
void delete(Groups groups);
}
我不会发布Entity类,因为我的意图不是这样。我是后台线程的新手。请提供帮助,并在理想情况下提供一些示例以帮助我理解。
答案 0 :(得分:0)
有两种方法可以解决此问题:如果您要在数据库上查询UI视图,我建议您将Day返回LiveData>,然后将其放在viewmodel中。所有这些内容都包含在Android文档中。
如果您正在服务中进行操作或不想与UI交互,只需执行以下操作:
Thread(Runnable() {
@Override
public void run() {
// Do your stuff here with Room
}
}).start()