1

我有一项定期跟踪用户位置的服务。我希望这项服务只在工作时间运行,所以我希望它在 9 点开始并在 18 点停止。

我正在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 小时停止服务?

谢谢

4

2 回答 2

1

注册 aBroadcastReceiverPendingIntent使用getReceiver(). 在其对运行实例的onReceive()方法调用中。希望这可以帮助。stopService()Service

于 2012-10-19T13:27:30.723 回答
0

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

于 2012-10-20T21:22:43.153 回答