Tôi đang sử dụng dịch vụ trong ứng dụng cordova của mình tạo thông báo startForeground
trong onCreate. Nếu ứng dụng bị giết qua thao tác vuốt và bắt đầu lại, sự kiện sẵn sàng cho thiết bị cordova sẽ không được kích hoạt nữa. Có vẻ như đối tượng cordova
không được xác định khi ứng dụng được khởi động lại. Tôi nhận được thông báo lỗi sau:startForeground() gây ra sự cố với cordova
E/Web Console(19472): Uncaught TypeError: Object #<Object> has no method 'exec' at file:///android_asset/www/src/jsFile.js:31
Dòng 31 và sau:
cordova.exec(function (r) {
if (callback) {
callback(r);
}
}, function (err) {
if (callback) {
callback(false);
}
}, "Plugin", "functionName", []);
Vấn đề chỉ xảy ra nếu tôi sử dụng startForeground
phục vụ của tôi, nếu tôi nhận xét phần này của mã ra tất cả đều hoạt động bình thường. Tôi rất cần một số trợ giúp về các câu hỏi sau:
- Có thể chạy cordova theo cách thủ công không?
- Làm thế nào để bắt đầu dịch vụ với
startForeground
, nhưng vẫn kích hoạt cordova thiết bị sẵn sàng sau khi giết chết và khởi động lại ứng dụng
Edit:
Sau khi thực hiện hai dự án ví dụ nhanh, một ở Cordova 3.6 (phiên bản tôi đang sử dụng cho ứng dụng thực tế của tôi) và với Cordova 5.1, tôi nhận ra rằng sự cố không phải xảy ra trong phiên bản Cordova mới. Tuy nhiên tôi không thực sự muốn cập nhật, bởi vì:
- Không bao giờ chạm vào một hệ thống chạy
- Tôi không biết những gì có thể không hoạt động nữa trong phiên bản bao giờ, như tôi đã cài đặt nhiều plugin trong App của tôi .
- Tôi lười biếng.
Bất kỳ ý tưởng nào có thể thay đổi từ 3,6 đến 5.1 đã giải quyết được lỗi và liệu tôi có thể cập nhật mã 3.6 của mình cho phù hợp không?
Edit2:
Đây là không một bản sao của this question. Hàm callReady deviceReady đã được truyền sai trong câu hỏi này. Đây không phải là trường hợp trong ứng dụng của tôi, và nó sẽ không có ý nghĩa để chỉ làm việc khi tôi không sử dụng startForeground
trong dịch vụ của tôi.
bạn có thể chỉnh sửa câu hỏi của mình và cung cấp mã JAVA (mã plugin) không. –
Nó không quan trọng (99,9% chắc chắn), vì tôi có thể gọi bất kỳ Plugin nào tôi muốn và lỗi vẫn giữ nguyên. –
Chỉ là một gợi ý đơn giản: nếu bạn vẫn gặp vấn đề (tôi đoán bạn đã tìm ra giải pháp), tham số 'useCapture' của bạn được đặt thành' false' ở cuối sự kiện nghe của bạn: 'addEventListener ('deviceready', onDeviceReady, false); –