当我的应用关闭时,我每隔半小时编写一个启动服务的代码:
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,从服务器下载一些数据,如果验证了某些条件,则在通知栏上显示通知。
但是当我关闭我的应用程序而不是半小时之后,服务立即执行了。 如何在半小时后更正我的代码以便首次执行?
答案 0 :(得分:2)
但是,当我关闭我的应用程序而不是半小时后,服务立即执行。
setInexactRepeating()
的第二个参数是您希望事件首次发生的时间。使用ELAPSED_REALTIME
或ELAPSED_REALTIME_WAKEUP
时,需要将其表示为SystemClock.elapsedRealtime()+...
,其中...
是您希望事件发生的距离(SystemClock.elapsedRealtime()
)的距离以毫秒为单位。你的代码没有这样做;你期望的开始时间已经过去了。