2013-12-23 1 views
5

구현이 IntentService 인 경우 Activity에서 시작한 다음 다른 하나의 IntentIntentService 대기열에 추가하여 처리합니다. 그래서 지금 우리는 먼저 Intent을 처리하고 있으며 나머지는 Intent입니다. 이제 OS가 이해할 수있는 이유 때문에 우리의 Application 프로세스를 죽인다는 것을 상상해 봅시다. 질문 :OS가 IntentService를 삭제 한 경우 어떻게해야합니까?

  1. IntentService을 다시 시작하는 방법은 무엇입니까?

  2. 대기열을 복원하는 방법은 무엇입니까?

글쎄, 난 항상 당신이 onStartCommand()의 오버라이드 (override) 할 수 있으며 Service 수행 할 작업 분에게 Service이 알고있다. 그러나 queue 모델로 인해 IntentService이 필요합니다.

답변

4

IntentService은 작업 대기열을 영구 유지해야하는 경우 사용하려는 것이 아닙니다. 많은 IntentIntentService으로 보내고 프로세스가 Android에 의해 종료 된 경우 대기열을 다시 작성할 수 없습니다. IntentService은 내부 Handler을 사용하여 Intent을 대기열에 올려 놓기 만하면 아무 곳에 나 유지되지 않습니다. 그들은 단지 길을 잃는다.

내가 너라면 나 자신을 구현할 것이다. IntentService의 코드는 그리 크지 않으므로이 코드를보고 자신의 모델로 사용할 수 있습니다 (Service). 큐를 데이터베이스에 작성하여 지속성을 유지할 수 있습니다. START_STICKYonStartCommand()에서 반환하여 Android 요구 사항으로 인해 Android가 자동으로 다시 시작되도록합니다 (Service).

+0

감사합니다. David. 첫 번째 질문은 어떻습니까? 'IntentService'가 죽은 경우 다시 시작하는 방법은 무엇입니까? – Eugene

+0

다시 시작하려면 해당 프로그램이 종료되었음을 알아야합니다. 내 대답에서 말했듯이, 'IntentService'는 올바른 기술이 아닙니다. 그러나 어쨌든 그것을 사용하고 싶어하기 때문에 파생 클래스의 생성자에서'setIntentRedelivery (true)'를 호출 할 수 있습니다. 이것은 인 텐트가 처리되는 동안 안드로이드가'IntentService'를 자동으로 다시 시작하게합니다 (즉, 안드로이드가 작업을하는 동안 프로세스를 죽인 경우). –

+0

아니요, 내가 제안한 방법을 사용하고 IntentService를 다시 시작하기위한 가능한 방법을 알고 싶었습니다. 감사 – Eugene

관련 문제