2013-11-14 20 views
7

Tôi đang tạo một plugin tùy chỉnh cho ứng dụng cordova/phonegap của Android và cảnh lửa Java nguyên bản hoạt động bao gồm gọi lại được gọi bằng dịch vụ bắt đầu. Ý tưởng là callback bị tấn công mỗi giây từ dịch vụ và hoạt động tốt, nhưng vấn đề là tôi dường như không thể chạy nó trong một thread khác, vì vậy thread cordova chính bị chặn và ứng dụng hoàn toàn không hồi đáp.Chủ đề chặn plugin Cordova

Dựa trên những tài liệu tôi đang làm điều này:

@Override 
public boolean execute(String action, JSONArray args, final CallbackContext context) throws JSONException 
{ 

/* snip */ 
    cordova.getThreadPool().execute(new Runnable() 
    { 
     public void run() 
     { 
      Intent myIntent = new Intent(this.cordova.getActivity(), myMonitoring.class); 
      this.cordova.getActivity().startActivity(myIntent);  
      callbackContext.success(); 
     } 
    }); 

    return true; 
} 

Tôi nhận ra đây gọi lại JS sẽ không bao giờ được gọi là (tức là callbackContext.success();) vì hoạt động này được ngăn chặn, nhưng không nên thực tế giữ chủ đề PhoneGap chạy sau return true? Nếu tôi xóa cuộc gọi startActivity thì ứng dụng sẽ hoạt động như mong đợi.

Trả lời

6

Tôi đang điều tra một vấn đề (khác). Nhưng có vẻ như giao diện người dùng Chủ đề chính không bằng Cordova. Và những gì xảy ra là giao diện người dùng Chủ đề chính thực sự được phát hành, nhưng chủ đề Cordova thì không.

BTW, tôi cũng nghĩ rằng có một sự khác biệt giữa:

callbackContext.success(); 

callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result)); 

Người ta vẫn không nướng, xin lỗi. Nếu tôi sẽ tìm thấy một số chi tiết, tôi sẽ cập nhật.

Ngoài ra, bạn có thể gọi callbackContext.success(); trước tiên, sau đó phần còn lại .. (nếu nó giúp ích gì).

+0

Nâng cấp từ Cordova 3.1.0 lên 3.3.0 giải quyết các vấn đề về luồng chính. Tôi đang bỏ qua 3.4.0, và chờ 3.5.0, vì tôi tin rằng một lỗi liên quan (cũng là luồng/sự kiện) đã được phát hiện ở đó (3.4.0) và cố định cho bản phát hành tiếp theo. – Oren

Các vấn đề liên quan