gpt4 book ai didi

Javascript调用java函数并在Android webview上进行消费操作

转载 作者:行者123 更新时间:2023-12-01 14:34:52 24 4
gpt4 key购买 nike

我用phonegap开发android。javascript和java之间有通信。

var img = server.getImage(); //javascript code

“服务器”定义为:

mWebView.addJavascriptInterface(new DemoInterface(), "server"); //java code

“getImage”是一个消耗操作。

public String getImage() {  
Thread.sleep(2000);
return "";
}

如果我调用 server.getImage,我的 webview 将卡住 2 秒。一种解决方案是在单独的线程中运行消费操作并回调 javascript 来设置 var img。

我的问题是是否还有其他解决方案。例如javascript直接在线程中调用java函数。

非常欢迎任何建议!

最佳答案

我遇到了同样的问题:我需要在 Android 上调用消费操作。

我通过将 javascript 调用设计为异步调用解决了这个问题:

getImageMethod : function() {
server.getImage("imageFoundMethod");
},

imageFoundMethod : function(image) {
// image is the image variable returned by the javascript interface
}

我在android中这样设计了我的JavascriptInterface:

private String callback;

public void getImage(String callback) {
this.callback = callback;
// Call a thread or an asynchronous object such as AsyncTask
// The thread or the AsyncTask should call the method callbackJavascript
// to send the answer back
}

public void callbackJavascript(String result) {
mWebView.loadUrl("javascript:window." + this.callback + "(" + result + ");");
}

在此示例中,如果您想返回一些 json,结果也可以是 json 对象的字符串表示形式。

这里是 AsyncTask 文档的链接: http://developer.android.com/reference/android/os/AsyncTask.html

关于Javascript调用java函数并在Android webview上进行消费操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16577822/

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