2013-07-08 44 views

回答

3

WebView中的JavaScript不會在UI線程上運行。它在WebCore線程上運行。執行方法也在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; 
} 
+0

在PhoneGap的Android的代碼我推斷的PhoneGap具有 一個嵌入式服務器和從UI天然製成的JavaScript調用是 通過嵌入式服務器並因此回調可以在 單獨的線程來執行。 – MAST3RMIND