安排服务每半小时执行一次

时间:2015-03-18 15:21:19

标签: android android-service

当我的应用关闭时,我每隔半小时编写一个启动服务的代码:

Intent serviceIntent = new Intent(context, BackgroundService.class);
pIntent = PendingIntent.getService(context, 0, serviceIntent, 0);
alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
    AlarmManager.INTERVAL_HALF_HOUR, AlarmManager.INTERVAL_HALF_HOUR, pIntent);

BackGround服务扩展IntentService,从服务器下载一些数据,如果验证了某些条件,则在通知栏上显示通知。

但是当我关闭我的应用程序而不是半小时之后,服务立即执行了。 如何在半小时后更正我的代码以便首次执行?

1 个答案:

答案 0 :(得分:2)

  

但是,当我关闭我的应用程序而不是半小时后,服务立即执行。

setInexactRepeating()的第二个参数是您希望事件首次发生的时间。使用ELAPSED_REALTIMEELAPSED_REALTIME_WAKEUP时,需要将其表示为SystemClock.elapsedRealtime()+...,其中...是您希望事件发生的距离(SystemClock.elapsedRealtime())的距离以毫秒为单位。你的代码没有这样做;你期望的开始时间已经过去了。