如何在phonegap开发中实现线程进程?

时间:2013-07-08 09:21:10

标签: cordova

我正在开发从服务器读取json数据的phonegap应用程序,但它会停止执行当前进程,直到javascript被执行。

我想像线程一样执行这个过程。

我怎样才能实现它?

1 个答案:

答案 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;
}