Возможно, вы захотите изучить темы. Приведенный ниже код выполняется в потоке, и как только возвращается значение, оно добавляется к polist
transactionDao.selectAll().observe(this, Observer {
if (it != null && it.isNotEmpty()) {
polist.addAll(it)
}
})
То же самое для
vregularDao.getAll().observe(this, Observer {
if (it != null && it.isNotEmpty()) {
polist.addAll(it)
}
})
, поэтому последний фрагмент кода вызывается напрямую. поскольку два других потока в настоящий момент не вернули никаких данных. не изящно (PSUDEOCODE) ...
bool selectAllDone;
bool getAllDone;
// polist is a MutableList
transactionDao.selectAll().observe(this, Observer {
if (it != null && it.isNotEmpty()) {
polist.addAll(it)
performSomeAction();
selectAllDone = true;
}
})
vregularDao.getAll().observe(this, Observer {
if (it != null && it.isNotEmpty()) {
polist.addAll(it)
performSomeAction();
getAllDone = true;
}
})
// but this is called first then above codes.I want this to be called only after live data is received
public fun performSomeAction(){
if(getAllDone & selectAllDone){
alllist.forEach{
//perform some action
}
}
}