【发布时间】:2020-07-09 00:53:39
【问题描述】:
我需要以最小的时间间隔运行两个函数。由于超出此问题范围的原因,起初我试图控制在 webview 中运行的进程的时间(通过JavascriptInterface):
webView.post(() -> functionA());
// ... wait 2 secs in javascript and then...
webView.post(() -> functionB());
虽然这在大多数情况下运行良好,但对于一位用户而言,这两个函数有时似乎会立即彼此运行(仍然以正确的顺序运行,但只是没有时间间隔)。
回想起来,这是可以理解的,如果将可运行对象发布到处理程序只会将它们放入队列中,而不能保证根据它们被放入队列的时间来保持相对时间。
所以,如果是这样的话,那么我的新策略是忘记从webview中运行的javascript控制时间,而直接在Java中控制它。
所以问题是...使用postDelayed() 是否保证至少两个函数之间的最小时间间隔正在运行?
webView.post(() -> functionA());
webView.postDelayed(() -> functionB(), 2000);
我觉得它应该有预期的效果,但我很谨慎,它可能与我正在做的一样......在functionA 2 秒后将functionB 放入队列中,但不能保证他们实际上会保持他们之间的时间间隔
【问题讨论】:
-
我使用过 PostDelayed,是的,它确实有效。
-
你不能等到functionA返回一些东西或被执行(通过设置一些标志)然后才开始等待两秒钟。甚至将 functionB 延迟放入 functionA 中
-
这是一个 WebView/JavaScript 问题还是 Java 问题?
-
您是在寻找
functionA()返回后或functionA()开始执行后的 2 秒间隔吗?
标签: java android asynchronous android-handler android-looper