Tôi cần chạy một tác vụ định kỳ trong một ứng dụng Android. Tôi hiện đang sử dụng một bộ đếm thời gian như thế này:Thay đổi đồng hồ hệ thống Android ngừng hẹn giờ. Làm thế nào tôi có thể khởi động lại chúng?
final Handler guiHandler = new Handler();
// the task to run
final Runnable myRunnable = new Runnable() {
@Override
public void run() {
doMyStuff();
}
};
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
guiHandler.post(myRunnable);
}
}, 0, 30000); // run every 30 seconds
này thực hiện chính xác những gì tôi cần, nhưng có một vấn đề: nếu tôi thay đổi thời gian trên giả lập hoặc điện thoại, bộ đếm thời gian ngừng chạy. Đây là nội dung xuất hiện trong nhật ký khi tôi thay đổi thời gian:
D/SystemClock( 331): Setting time of day to sec=1278920137
W/SystemClock( 331): Unable to set rtc to 1278920137: Invalid argument
Không có gì về hẹn giờ bị gián đoạn, nhưng rõ ràng không chạy nữa sau khi đồng hồ hệ thống thay đổi. Tôi cần nhiệm vụ tiếp tục chạy mọi lúc miễn là ứng dụng đang chạy.
Làm cách nào để khởi động lại bộ hẹn giờ nếu nó bị dừng như thế này? Không có phương pháp nào trên Bộ hẹn giờ hoặc TimerTask để kiểm tra xem nó có đang chạy hay không, vì vậy tôi không thể biết khi nào lên lịch lại nó. Bất kỳ ý tưởng?
đây là giải pháp tuyệt vời mà tôi đang tìm kiếm! cảm ơn – JosephT