0

我正在使用计时器任务在我的 API 上发送更新。问题是,当设备处于非活动状态时,我真的不知道确切的状态。定时器任务停止。然后,当我解锁屏幕并再次导航时,任务又开始了。

这是我的做法:

myTimer = new Timer();
UpdateCurrentLocation updateCurrentLocation= new UpdateCurrentLocation();
myTimer.scheduleAtFixedRate(updateCurrentLocation, 0, 900000);

这是每 15 分钟更新一次。但是当设备被禁用时活动停止。我希望 updateCurrenLocation 每隔 15 分钟执行一次,即使在后台或设备被锁定,甚至应用程序不在前面。

有任何想法吗?谢谢!

4

1 回答 1

1

您没有描述您要实现的目标,但很可能您必须创建一个Service或一个IntentService,并利用它AlarmManager来安排Service每 15 分钟执行一次。

public static void scheduleSyncAlarm(Context context){
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

    Intent syncData = new Intent(context, SyncDataService.class);

    PendingIntent pendingSyncData = PendingIntent.getService(context, 0, syncData,
            PendingIntent.FLAG_UPDATE_CURRENT);

    long syncInterval=AlarmManager.INTERVAL_HOUR/4;

    alarmManager.setRepeating(AlarmManager.RTC, 0,
            syncInterval, pendingSyncData);

}
于 2013-09-06T10:08:24.973 回答