Tôi đang cố chạy một tác vụ nền chạy mỗi phút một lần cho ứng dụng android nhưng tôi đang đấu tranh để đảm bảo rằng tác vụ thực sự chạy mỗi phút. Tôi đã thử nhiều phương pháp khác nhau từ việc sử dụng SystemClock.sleep() tới AlarmManager (cả báo thức lặp lại và báo thức cố định) nhưng có vẻ như trừ khi thiết bị đang sạc bất kỳ loại hệ thống lặp nào có tốc độ lặp lại thay đổi một khi thiết bị đã rút phích cắm. Có cách nào để chạy một dịch vụ ổn định lặp đi lặp lại không?Nhiệm vụ nền lặp lại đáng tin cậy trên android
Trả lời
Bạn đã triển khai Timer? Nó hoạt động rất tốt cho những gì tôi sử dụng nó cho, nhưng sau đó một lần nữa tôi đã không lo lắng về độ chính xác ở tất cả. Đối với tất cả tôi biết nó có thể thay đổi một chút nhưng tôi nghi ngờ nó. Nó có vẻ khá phù hợp với tôi.
Chỉnh sửa: Tôi không chịu trách nhiệm về sử dụng chịu trách nhiệm hoặc thiếu trách nhiệm của bạn trong cơ sở này;)
Tôi không hoàn toàn chắc chắn lý do tại sao cả hai câu trả lời của chúng tôi đều bảo đảm một câu trả lời. – MattC
Đặc biệt vì chúng đều rất phù hợp với câu hỏi. – MattC
Bộ hẹn giờ không ngăn được ngủ và sẽ có nghĩa là khoảng thời gian kích hoạt lớn hơn một phút nếu điện thoại ở chế độ chờ. – Nakedible
Nếu bạn cần phải có một dịch vụ mà chạy mỗi phút, trên phút, bạn có hai lựa chọn:
Sử dụng AlarmManager.setRepeating (RTC_WAKEUP, ...). Trong trường hợp này, điện thoại sẽ ngủ, nhưng RTC bên trong điện thoại sẽ đánh thức nó mỗi phút để xử lý sự kiện lặp lại. Điều này sẽ làm việc, nhưng sẽ không được terribly chính xác như rất nhiều điều đang xảy ra sau khi điện thoại thức dậy để mã của bạn có thể không nhận được thời gian thực hiện ngay lập tức.
Lấy WakeLock từ PowerManager và sử dụng bất kỳ thứ gì bạn muốn đặt thời gian cho mã của mình (Bộ hẹn giờ, Bộ xử lý, v.v.). Điều này buộc điện thoại không bao giờ ngủ, điều đó có nghĩa là bạn có thể tự do chạy mã gần như chính xác khi bạn yêu cầu.
Cả hai cách tiếp cận chắc chắn sẽ làm hao pin nhanh chóng. Thông thường, điện thoại có thể ngủ 4 hoặc thậm chí 9 phút giữa các lần thức dậy, do đó, thức dậy một lần mỗi phút là một sự thay đổi từ lớn.
- 1. Dịch vụ Android và nhiệm vụ lặp đi lặp lại chạy trong chủ đề
- 2. Nhiệm vụ nền trên appengine
- 3. Cửa sổ.opener có đáng tin cậy không?
- 4. Thông tin trình duyệt chéo đáng tin cậy trên ContentEditable
- 5. Danh sách CA đáng tin cậy trong android?
- 6. Win32 SetForegroundWindow không đáng tin cậy
- 7. Ổ cắm unix miền đáng tin cậy đáng tin cậy như thế nào?
- 8. Cách xác định người dùng đáng tin cậy trên Internet?
- 9. Hẹn giờ đáng tin cậy hơn System.Threading.Timer
- 10. javaFX MediaPlayer getCurrentTime() không đáng tin cậy
- 11. HTTP_REFERER đáng tin cậy như thế nào?
- 12. Rails Nhiệm vụ nền trên không
- 13. NSTimer thay thế đáng tin cậy
- 14. C# MouseMove đáng tin cậy (hop)
- 15. Gắn kết sshfs trên kết nối không đáng tin cậy
- 16. In_irq() có đáng tin cậy không?
- 17. Có phải document.cookie đáng tin cậy không?
- 18. Ràng buộc không đáng tin cậy
- 19. "AndroidAnnotaions" có đáng tin cậy không?
- 20. Hệ thống phát lại phương tiện tạm dừng đáng tin cậy-Wide trong Android
- 21. Bitbucket có đáng tin cậy không?
- 22. Kết nối đáng tin cậy là gì?
- 23. Ổ cắm có đáng tin cậy không?
- 24. TCP vs UDP đáng tin cậy
- 25. Phát hiện Windows đáng tin cậy trong Python
- 26. Chứng chỉ RapidSSL không đáng tin cậy trên máy tính bảng Android
- 27. LocationManager.isProviderEnabled (LocationManager.NETWORK_PROVIDER) không đáng tin cậy, tại sao?
- 28. MonoDroid HttpWebRequest và WebClient không đáng tin cậy?
- 29. Trình nền tảng cơ sở tiêu chuẩn Linux (LSB) có đáng tin cậy không?
- 30. Mục đích của phiên WCF đáng tin cậy là gì?
Bạn đã thử dịch vụ AlarmManager? –