Tôi đang theo dõi mã mẫu để gửi thông báo cập nhật sau mỗi 10 giây. Mã theo sau và mã nằm trong số UpdateService
cho số AppWidgetProvider
. Nếu tôi đặt Thread.sleep(10*1000);
tôi có thể thấy hành vi mong đợi của vòng lặp dịch vụ của mình. Tôi rõ ràng có một cái gì đó về cơ bản sai lầm đó là kích hoạt ngay lập tức. Nó được coi là một PendingIntent
của một báo thức sẽ phát sóng cập nhật cho người nghe của tôi.Tại sao trình quản lý báo thức Android của tôi lại kích hoạt ngay lập tức?
long nextUpdate = 10*1000;
Log.d(TAG, "Requesting next update in " + nextUpdate + " msec.");
Intent updateIntent = new Intent(ACTION_UPDATE_ALL);
updateIntent.setClass(this, UpdateService.class);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, updateIntent, 0);
// Schedule alarm, and force the device awake for this update
AlarmManager alarmManager = (AlarmManager)getBaseContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),
nextUpdate, pendingIntent);
Nhờ cả hai +1 từ tôi cho câu trả lời nhanh và chính xác. Về vấn đề tiếp theo. Khá trớ trêu thay, tôi đã cố gắng đưa ra một bình luận thứ hai quá sớm (<15 giây), vì vậy tôi nhận được một thông báo hẹn giờ-pop từ SO. :)) – mobibob
im làm như thế này 'amAlarm1.setInexactRepeating (AlarmManager.RTC_WAKEUP, 120000, AlarmManager.INTERVAL_DAY, alarm1Pending); mục đích vẫn đang chờ xử lý đang kích hoạt ngay lập tức? ' –
@MuhammadBabar: Bạn thực sự nên đăng câu hỏi mới. Tuy nhiên, để trả lời câu hỏi của bạn, bạn đang chuyển '120000' thành triggerAtTime, tương ứng với 'Fri, 02 Jan 1970 09:20:00 GMT' – Falmarri