2014-11-16 1 views
2

IntentService을 사용하여 원격 소스에서 데이터를 가져옵니다. 서비스가 데이터를 가져 오면 sendBroadcast(intent)을 사용하여 브로드 캐스트합니다.IntentService에서 sendBroadcast()를 올바르게 처리합니다.

내 주요 활동에서 sendBroadcast()에 의해 전송 된 데이터를 처리하기 위해 onReceive()을 정의합니다.

을 사용하여 수신기를 onResume()에 등록하고 onPause()에 등록을 취소하고 unregisterReceiver()을 사용합니다. 이는 http://developer.android.com/reference/android/content/BroadcastReceiver.html에서 권장되는 내용을 따릅니다.

sendBroadcast()이 활동이 onPause() (수신자가 등록 취소 된 위치) 인 동안 데이터를 브로드 캐스트하면 브로드 캐스트가 처리되지 않습니다. onPause() 다음에 onResume()이 있으면 수신자가 다시 등록되지만 IntentService는 이미 작업을 완료했으며 수신자가 청취 할 내용이 없습니다. 질문 : 방송에 이미 일어난 일을 활동에 알리는 좋은 패턴이 있습니까?

+2

GreenRobot의 EventBus 또는 OTTO와 같이 EventBus를 사용하십시오. 다루기가 훨씬 쉬울 것입니다. –

+0

@MarcinOrlowski 예! :) –

+0

알림 또는 바운드 서비스 패턴을 사용하지 않는 이유는 무엇입니까? – pskink

답변

1

현재 시나리오에서 수행 할 수있는 방법에 대해 모르겠지만 개발자는 다른 방식으로 동일한 작업을 수행합니다.

그들은 당신이하고있는 같은 목적을 위해 설계되었습니다 EventBus (Otto, GreenRobot's EventBus)를 사용하고 아주 멋지게 일을하고 있어요.

그래서 사용하면 재미있을 것입니다.