我想在异步任务中从Room数据库中获取一些数据。 因此,我正在异步任务中运行一些代码,我需要从Room数据库中获取一些信息,而我没有使用实时数据,因此必须在单独的线程中获取信息,并且需要立即访问数据,例如:< / p>
//get data
ArrrayList<Job> jobList = databaseCall.getList();
//use data
for(Job job : jobList)
我试图使用2个异步任务来执行此操作,其中一个(任务B)返回结果。因此,我开始运行任务A,然后使用execute()。get()调用任务B,这使任务A等待结果,但从未调用任务B的doInBackground方法(我认为是因为任务A正在运行),任何人都可以将我指向正确的方向,我应该怎么做。
这里有一些代码,只是因为,谁知道..
我如何创建列表
List<JobList> jobListArrayList = jobListRepository.getAllWithLimit(Constants.JOB_LISTS_TO_RETURN);
jobListRepository方法
public List<JobList> getAllWithLimit(int i) {
Log.d(TAG,"getAllWithLimit");
try {
return new getJobListsWithLimit(jobDao, i).execute().get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
return null;
}
异步任务(用于保持同步的任务B)数据库调用,如从未提及的doInBackground调用
private static class getJobListsWithLimit extends AsyncTask<Void, Void,
List<JobList>> {
private JobDao mDao;
private int limit;
getJobListsWithLimit(JobDao dao, int limit) {
this.mDao = dao;
this.limit = limit;
Log.d(TAG,"async task");
}
@Override
protected List<JobList> doInBackground(Void... params) {
Log.d(TAG,"doInBackground");
return mDao.getAllJobListsWithLimit(limit);
}
}
并且在调用jobListRepository.getAllWithLimit之后任务A不会继续,所以我想我知道问题所在,但是我对解决方案不太清楚,谢谢您的帮助
编辑 刚找到工作经理 我需要一个线程池