2009-08-31 30 views
7

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

+0

Bạn đã thử dịch vụ AlarmManager? –

Trả lời

3

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;)

+1

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

+0

Đặc biệt vì chúng đều rất phù hợp với câu hỏi. – MattC

+0

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

2

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.

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