gpt4 book ai didi

android - 如何等待 webview.post 完成?

转载 作者:行者123 更新时间:2023-11-30 02:04:58 27 4
gpt4 key购买 nike

在下面的代码中,outside 打印在 inside 之前。我希望顺序先是 inside,然后是 outside。那么如何确保 Runnable 在到达第二个 Log 之前完成?

webView.post(new Runnable() {
@Override
public void run() {
Log.d("check", "inside");
}
});

// some code needed here

Log.d("check", "outside");

必须在要注释的地方插入一些代码才能实现此目的。

编辑:我在后台服务中完成所有工作。

[P.S.:那些对我为什么这样做感到好奇的人,这是因为除非我添加 webview.post,否则我会不断收到以下错误:“All WebView方法必须在同一线程上调用。”。无论如何,这不应该影响你回答这个问题。]

最佳答案

您可以尝试使用 CountDownLatch :

final CountDownLatch latch = new CountDownLatch(1);

webView.post(new Runnable() {
@Override
public void run() {
Log.d("check", "inside");
latch.countDown();
}
});

// some code needed here
latch.await();

Log.d("check", "outside");

但是,您不希望在 UI 线程上使用 latch.await(),因为这是一种阻塞方法。如果您想在 UI 线程上运行它,最好将 latch.countDown() 替换为调用回调方法,这将依次运行 Log.d("check ", "外面").

关于android - 如何等待 webview.post 完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30817829/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com