2012-10-19 2 views
1

나는 정기적으로 사용자의 위치를 ​​추적하는 서비스를 가지고있다. 근무 시간에만이 서비스를 실행하고 싶기 때문에 9시에 시작하고 18시에 중단하고 싶습니다.특정 시간 사이에 백그라운드 서비스를 예약하는 방법 android

는이 코드

 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 시간에 서비스를 중지 할 수있는 알람 일정을 어떻게해야와 함께 AlarmManager과 함께 서비스를 시작 해요?

감사

답변

1

BroadcastReceiver를 등록하고 getReceiver()을 사용하기위한 PendingIntent을 만들 수 있습니다. 해당 onReceive() 메서드에서 인스턴스 실행 stopService() 호출하십시오. 희망이 도움이됩니다.

+0

그래서이 BroadcastReceiver를 호출하는 또 다른 alarmManager를 생성합니까? –

+0

@DanyY, 다른 매개 변수를 사용하여 setRepeating()을 다시 호출하면 AlarmManager로 다른 작업을 예약 할 수 있습니다. – Egor

0

게시 한 코드에서 setRepeating() 대신 set()을 사용하여 단일 알람을 설정할 수 있습니다. 그런 다음 방송 수신기에서 알람이 수신 된 현재 시간을 확인할 수 있습니다. 업무 시간 (9 - 6)이 지나면 수신기에 또 하나의 알람을 설정합니다. 오전 9 시부 터 오후 6시 사이가 아니라면 내일 오전 9시에 알람을 예약하십시오.

관련 문제