Прежде чем кто-нибудь указывает на это, я прочитал this answer about Handler, и этот вопрос строит apon.Как отменить код на Android?
Мой код выглядит следующим образом
Handler timerHandler =new Handler();
Runnable timerRunnable = new Runnable() {
@Override
public void run() {//stuff that is called iteratively and needs delay before every iteration
do some stuff;
if(ExitCodition){
timerHandler.removeCallbacks(timerRunnable);
}
else {//call that stuff again
timerHandler.postDelayed(this, 500);
}
}
};
someMethodCalledOnButtonClick(){
//do foo;
timerHandler.postDelayed(timerRunnable,500);
//do bar;
}
Что мне нужно, что когда someMethodCalledOnButtonClick()
называется, исполнение происходит как
- Foo 2.the материал, который нуждается задержки 3. бар
Я вижу, что код, требующий d elay фактически работает независимо от более позднего кода (bar
), поэтому код bar
выполняется, а код обработчика запускается параллельно.
Как обеспечить выполнение кода в правильном порядке? Все, что мне нужно, это добавить задержку в выполнении каждой итерации некоторого кода (без задержки, я мог бы просто использовать цикл while)
Вы можете использовать msg.what, чтобы отличить различную задачу, когда ваш timerRunnable закончен, отправьте сообщение msg в обработчик для выполнения кода о «do bar». –