как запустить метод B () (основной поток) внутри onResume () после того, как метод A () (рабочий поток) завершился внутри onStart ()
У меня есть loadCards () внутри onStart () и initViews() внутри onResume ().
Необходимо запускать initViews () только после завершения loadCards (), loadCards () - длительная операция и обратный вызов ().
CurrentПроблема в том, что initViews () запускается до завершения loadCards (), поэтому получите нулевой указатель.
Хотел бы получить помощь: как запустить initViews () (внутри onResume) только после того, как loadCards () (внутри onStart) имеетготово?
@Override
protected void onStart() {
super.onStart();
loadCards(new Callback(){
success(List<Card> cardList){do something}
fail(){do other thing}
});
}
@Override
protected void onResume() {
super.onResume();
//my problem is here:
//how to know if loadCards() has finished? then run initViews.
initViews();
}
public void loadCards(Callback callback) {
Runnable runnable = () -> {
//List<Card> cardList = get list from work thread;
mAppExecutors.mainThread().execute(() -> {
if (result == empty) {
callback.fail();
} else {
callback.success(cardList);
}
});
};
mAppExecutors.diskIO().execute(runnable);
}
void initViews(){}
ожидается: после завершения loadCards () запустите initViews ().
актуально: когда loadCards () все еще работает, initViews () выполняется.