Xin chào, tôi đang sử dụng Trình quản lý báo thức cho khoảng thời gian cụ thể trong 3 phút và tôi bắt đầu theo dõi. Nó làm việc cho đôi khi và đột nhiên tôi nhận thấy có khoảng thời gian không thường xuyên mà không phải là chính xác! Bạn có thể xem trong nhật ký được đính kèm tại thời điểm "20-Jul-2016 12:22:03 pm" thời gian khác nhau! Tôi kết nối điện thoại và tắt màn hình và theo dõi! 3 phút một lần, tôi nhấn máy chủ và nhận phản hồi là 1. Nhưng tại một thời điểm, phải mất 5 phút để nhấn máy chủ! Tại sao vấn đề kỳ lạ này lại xảy ra?Trình quản lý báo thức không hoạt động ở khoảng thời gian cụ thể
Đây là mã.
public void startAt3() {
Intent alarmIntent = new Intent(ActivityTracking.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(ActivityTracking.this, 0, alarmIntent, 0);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
/* Set the alarm */
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
/* Repeating on every 3 minute interval */
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(),
180000L, pendingIntent);
String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
Log.e("alarm",mydate);
}
AlarmReceiver:
public class AlarmReceiver extends WakefulBroadcastReceiver {//AlarmReceiver class
@Override
public void onReceive(Context context, Intent intent) {//onReceive method
String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
Log.e("alarm",mydate);
Intent service = new Intent(context, SimpleWakefulService.class);//intent to call another class
// Start the service, keeping the device awake while it is launching.
startWakefulService(context, service);//service started
}
SimpleWakefulService:
public class SimpleWakefulService extends IntentService {
public SimpleWakefulService() {
super("SimpleWakefulService");//instantiates simpleWakefulService
}
@Override
protected void onHandleIntent(Intent intent) {
Log.e("simpleWakeful","simpleWakeful");
serviceCall(this); //here is downloadTaskMethod called and getting response as 1.
}
cảm ơn câu trả lời của bạn. Tôi có một nghi ngờ từ blog. trong phương thức onReceive, WrappedAlarmManager là gì? những gì tôi cần phải sử dụng trong mã của tôi? – Shadow
cũng interval_seven giây bạn đã đề cập ngay. những gì tôi nên cho? – Shadow
Mã có sẵn trên tài khoản Github của tôi tại đây: https://github.com/hoombar/android-training/tree/master/src/net/rdyonline/android_training/alarms –