Есть две функции, которые мне нужно запустить с минимальным промежутком времени между ними. По причинам, выходящим за рамки этого вопроса, сначала я пытался контролировать время процесса, работающего в веб-просмотре (через JavascriptInterface):
webView.post(() -> functionA());
// ... wait 2 secs in javascript and then...
webView.post(() -> functionB());
Хотя в большинстве случаев это работало нормально, одному пользователю, в частности, казалось, что две функции иногда запускались сразу друг за другом (все еще в правильном порядке, но без временного промежутка).
Если подумать, это понятно, если отправка исполняемого объекта в обработчик просто поставит его в очередь без какой-либо гарантии сохранения относительного времени в зависимости от того, когда он был помещен в очередь.
Итак, если это так, то моя новая стратегия состоит в том, чтобы забыть об управлении временем из javascript, работающего в веб-просмотре, и просто управлять им непосредственно в Java.
Итак, вопрос в том... гарантирует ли использование postDelayed()
следующим образом хотя бы минимальный промежуток времени между двумя запущенными функциями?
webView.post(() -> functionA());
webView.postDelayed(() -> functionB(), 2000);
Я чувствую, что это должно иметь желаемый эффект, но я опасаюсь, что, возможно, это равнозначно тому, что я делал... помещая functionB
в очередь через 2 секунды после functionA
, без гарантии того, что они действительно сохранят этот временной интервал. между ними
functionA()
вернулся или после того, какfunctionA()
начал выполняться? - person tynn   schedule 04.04.2020