如何在特定时间安排android后台服务

时间:2012-10-19 13:18:30

标签: android android-service alarmmanager

我有一项定期跟踪用户位置的服务。 我希望这项服务只在工作时间运行,所以我希望它从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小时停止服务?

由于

2 个答案:

答案 0 :(得分:1)

注册BroadcastReceiver并使用PendingIntent为其创建getReceiver()。在onReceive()方法中,在正在运行的stopService()实例上调用Service。希望这会有所帮助。

答案 1 :(得分:0)

在您发布的代码中,您可以使用set()代替setRepeating()设置一个警报。然后在您的广播接收器中,您可以检查收到警报的当前时间。如果是营业时间(9到6),则在接收器中设置另一个警报。如果不是在上午9点到下午6点之间,那么你明天将闹钟安排到上午9点。