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.
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