当前位置: 首页 > 知识库问答 >
问题:

Android返回方法必须调用相同的线程错误

沃侯林
2023-03-14

我试图从WebView中javascript调用的方法调用WebView方法。然后Webview应该返回方法中使用的值。

html事件-

显然,Webview在ui线程中运行,而js不运行,webview的方法必须从同一个线程调用。此方法可用于从非ui线程调用方法:

webView.post(new Runnable() {
         public void run() {
            webView.loadUrl("javascript:" + s + ";");
        }
    });

但我也想返回结果<代码>返回webView。例如,getUrl()。我该怎么做?

共有1个答案

公冶弘壮
2023-03-14

正如您所说,当您从JS向JavaBridge调用方法,然后从非ui线程向类调用方法时,您必须使用侦听器/回调。完成加载url后,调用侦听器传递所需的字符串url。

在这个示例中,我定义了一个带有onGetWebViewUrl监听器的内部接口。我通过在同一个类中实现接口来注册侦听器,所以我可以很容易地调用它。

例如:

public class WebViewProxy implement WebViewListener {

    private WebView mWebView;

    ...

    @JavascriptInterface
    public void onJsStuff(){
        webView.post(new Runnable() {
             public void run() {
                mWebView.loadUrl("javascript:" + s + ";");
                WebViewProxy.this.onGetWebViewUrl(mWebView.getUrl());
            }
        });
    }

    @Override
    public void onGetWebViewUrl(String url){
        // call method 2 with this url
    }

    public interface WebViewListener {

        void onGetWebViewUrl(String url);
    }
}
 类似资料:
  • 问题内容: 我正在尝试为应用程序创建登录名。但是我有一个问题。 这是我的代码: Android studio表示必须在istructions的UI线程中调用该方法:以及 可能的解决方案? 问题答案: 尝试将您的值传递给 via 方法:

  • 问题内容: 方法getText()必须从UI线程调用,请提供帮助。我是android studio的初学者,可以在网上找到这些代码,但无法弄清楚,我真的很感激。 问题答案: 在其UI线程而非后台线程中获取值。

  • 这是我的kotlin代码: 但这是崩溃。 引起:java.lang.Throwable:在线程JavaBridge上调用了WebView方法。所有WebView方法必须在同一个线程上调用。 我怎样才能解决这个问题?我通过搜索找到了解决方案,但这是java代码。Kotlin和Java兼容,但由于语法错误而未运行。(我想这是因为我不知道Kotlin和Java。无论如何) 我是一个基于JavaScrip

  • 看起来它工作得很好,但我想知道我是否必须确保新代码需要线程安全?这里有什么意见吗?抱歉用了假名字,提前致谢。

  • 问题内容: 最近,我做了一个Netbeans项目,并且正在使用SVN。我看到重复的类错误,并且在控制台中显示 这是PieChartExplorer.java: 我努力了: 清理并重建项目 确保我在所有构造函数中都调用了super 如何解决?下载代码。 问题答案: 前几天我看到了这些症状。 我有我一直在编辑的文件,因此决定将更改分为2个提交。我进入了包含我的文件“ x / y / Z.java”的目

  • 在执行基本方法重载程序时,我始终收到以下错误: sh-4.3 $ javac HelloWorld . Java < br > HelloWorld . Java:10:错误:方法show()已在类hello world中定义< br > static void show()< br > hello world . Java:25:错误:方法show(int,int)已在类hello world中