내 앱은 매일 특정 시간에 웹에서 일부 데이터를 가져와야합니다. 따라서 AlarmManager를 사용하여 작업을 예약하면 정상적으로 작동합니다.AlarmManager와 함께 PendingIntent.getService() 또는 getBroadcast를 사용해야합니까?
그러나 여러 가지 예를 살펴보면 보류중인 의도와 관련하여 AlarmManager를 처리하는 두 가지 방법이있는 것으로 보입니다.
하나는 PendingIntent.getBroadcast()
을 사용하여 경보가 울리고 실제 작업을 수행 할 서비스가 시작될 때 브로드 캐스트 수신기를 호출합니다.
또 다른 접근법은 PendingIntent.getService()
을 사용하고 해당 알람이 울리면 직접 서비스에 전화하는 것입니다.
누군가 내가 두 방법의 차이점을 설명 할 수 있으므로 어느쪽에 의존할지 결정할 수 있습니까?
EDIT : getService()를 사용할 때 wake lock을 얻을 수있는 또 다른 질문은 무엇입니까?
PendingIntent pi = PendingIntent.getService(this, 0, new Intent(this, OnAlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
: 내가 대신 같은 서비스를 직접 호출하는 경우 WakeReminderIntentService.acquireStaticLock(context);
가 어떻게 깨우기 잠금을 획득해야하십시오 브로드 캐스트 리시버를 사용하는 경우
예를 들어, 나는 onReceive()에 다음 줄을
대신 간단히 서비스에서 가져와야합니까?
정말 상관 없습니다. IntentService 또는 Service 또는 로컬 또는 글로벌 브로드 캐스트를 사용할 수 있습니다. 당신은 그들 모두에서 똑같이 할 수 있어야합니다. –