【发布时间】:2016-02-27 23:00:57
【问题描述】:
我正在从 webview 调用 JavascriptInterface 方法来调用 javascript 方法。问题是方法在获取结果值之前返回值。那么如何让 return 语句等到从 ui 线程执行 javascript 方法。
Javascript接口
public class CordovaJSInterface {
Context cxt;
String returnValueFromJS="";
CordovaJSInterface(Context cxt){
this.cxt = cxt;
}
public void setReturnValueFromJS(String valueFromJS){
this.returnValueFromJS = valueFromJS;
}
@JavascriptInterface
public String performClick()
{
/*MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mainView.loadUrl("javascript:" + "getLocation()" + ";");
}
});*/
mainView.post(new Runnable() {
@Override
public void run() {
mainView.loadUrl("javascript:" + "getLocation()" + ";");
}
});
/**PROBLEM : Method returns variable returnValueFromJS
* before it is updated by getLocation() javascript method..
**/
return returnValueFromJS;
}
所以我想让performClick()先让ui线程完成再返回值。
【问题讨论】:
-
您必须为此使用界面。在
mainView.loadUrl()之后调用接口。 -
@AkshayBhat 请您详细说明一下代码.. 我真的很沮丧。
标签: android multithreading webview android-runonuithread webviewrunonuithread