2013-06-24 5 views
1

응용 프로그램 초기화 구성 요소로 IntentService를 사용하고 싶습니다. onConnected()가 호출 된 후 Google Play 서비스에 전화하여 배경 작업을 수행하고 싶습니다. Google의 자습서에서 활동을 보여줍니다. IntentService를 사용하여 그런 종류의 작업을하는 것이 안전합니까? onHandleIntent는 코드 몇 줄에 불과하므로 onConnected 호출 후에 모든 작업을 완료해야합니다. 그래서 나는 그것을 끝내고 난 후에 그것을 이해할 권리가 있다는 것을 이해할 수 있습니까? IntentService는 파괴 될 것이고 아무 것도 행해지 지 않을 것입니다. 콜백 서비스에서 NPE가 발생합니까? onConnected를 호출하는 동안 IntentService를 활성 상태로 유지할 수 있습니까? 아니면 일부 BroadcastReceiver + Service 패턴을 사용해야합니까?IntentService 콜백 등록

답변

3

그런 종류의 직업을 만들기 위해 IntentService를 사용하는 것이 안전합니까?

아니요 일단 onHandleIntent()이 반환되면 그 동안에는 새로운 명령을받지 않은 경우 서비스가 삭제됩니다. 작업이 완료 될 때 서비스 서비스가 사라질뿐만 아니라 모든 프로세스이 종료 될 수 있으므로 (백그라운드 프로세스, 특히 실행중인 서비스가없는 경우와 마찬가지로) IntentService에서 비동기 작업을 수행하는 것은 안전하지 않습니다.).

일부 BroadcastReceiver + 서비스 패턴을 사용해야합니까?

나는 BroadcastReceiver 부분에 대해 잘 모르지만 보통 Service을 사용해도됩니다. 작업이 완료되면 stopSelf()으로 전화하십시오.

+0

감사합니다. 'IntentService에서 비동기 작업을 수행하는 것은 안전하지 않습니다 .' 나는 그것을 필사적으로 찾고있었습니다. –

+0

@VirendraSingh : 네,'IntentService'와 동기 연산을 사용하거나'Service', 비동기 연산을 사용합니다. 그리고 자신의 논리는 백그라운드 작업이 모두 끝났을 때'stopSelf()'를 호출합니다. – CommonsWare