我有一项定期跟踪用户位置的服务。 我希望这项服务只在工作时间运行,所以我希望它从9h开始,到18h停止。
我正在使用此代码
的AlarmManager
启动服务
Intent syncIntent = new Intent(AlarmService.this, TrackingService.class);
PendingIntent pendingIntent = PendingIntent.getService(AlarmService.this, 0, syncIntent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.HOUR_OF_DAY, 9);
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), 1000 * 60 * 60 * 24, pendingIntent);
如何安排闹钟在18小时停止服务?
由于
答案 0 :(得分:1)
注册BroadcastReceiver
并使用PendingIntent
为其创建getReceiver()
。在onReceive()
方法中,在正在运行的stopService()
实例上调用Service
。希望这会有所帮助。
答案 1 :(得分:0)
在您发布的代码中,您可以使用set()
代替setRepeating()
设置一个警报。然后在您的广播接收器中,您可以检查收到警报的当前时间。如果是营业时间(9到6),则在接收器中设置另一个警报。如果不是在上午9点到下午6点之间,那么你明天将闹钟安排到上午9点。