我正在开发从服务器读取json数据的phonegap应用程序,但它会停止执行当前进程,直到javascript被执行。
我想像线程一样执行这个过程。
我怎样才能实现它?
答案 0 :(得分:3)
WebView中的JavaScript无法在UI线程上运行。它在WebCore线程上运行。 execute方法也在WebCore线程上运行。
如果您需要与UI进行交互,则应使用以下内容:
@Override
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
if ("beep".equals(action)) {
final long duration = args.getLong(0);
cordova.getActivity().runOnUiThread(new Runnable() {
public void run() {
...
callbackContext.success(); // Thread-safe.
}
});
return true;
}
return false;
}
如果您不需要在UI线程上运行,但又不想阻止WebCore线程:
@Override
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
if ("beep".equals(action)) {
final long duration = args.getLong(0);
cordova.getThreadPool().execute(new Runnable() {
public void run() {
...
callbackContext.success(); // Thread-safe.
}
});
return true;
}
return false;
}