2011-02-07 9 views
1

서비스가 백그라운드에서 실행 중이며 GUI에 알림이 표시됩니다. 응용 프로그램 관리 => 응용 프로그램 관리를 강제 종료하면 내 알림 표시 줄의 서비스, 응용 프로그램 및 아이콘이 꺼집니다. 내가 TaskKiller 응용 프로그램을 통해 내 응용 프로그램을 죽일 때Android :: 서비스를 강제 종료하는 방법

는하지만, 내 서비스 중지하고 안드로이드 OS는 (내가 로그 캣에서 볼 수있는) 내 알림 영역에 및 아이콘이 남아있는 서비스를 다시 시작합니다. 내 배경 작업 ( 다운로드 중)이 닫힙니다.

OnStartCommand()에서 START_STICKY (STArT_NOT_STICKY 플래그로 시도 함)를 반환하지만 행운은 없습니다. 내 GUI 활동, Context.BIND_AUTO_CREATE를 통해 서비스에 바인딩합니다. 그 플래그 때문입니까?

응용 프로그램이 작업 킬러에 의해 종료 될 때 내 응용 프로그램, 서비스 및 알림 영역 아이콘이 사라지도록하려면 어떻게해야합니까?

솔루션

활동에서 시작했을 때 서비스에 전달 의도에 플래그를 사용하여이 문제를 해결. OS가 크래시/작업 킬러 후에 서비스를 다시 시작할 때 서비스가 null 인 텐트를 받음

답변

1

내 첫 번째 질문은 왜 당신의 서비스가 작업 진행자에 의해 종료되기를 원할 것입니까? 또는 다른 말로하면, 왜 당신은 당신의 서비스를 taskkiller를 통해 죽여야 할 필요가 있습니까? 필요한 경우에만 서비스를 실행하고 stopSelf(), stopService() 또는 stopForeground()를 사용하여 적시에 서비스를 종료해야합니다 (시작 방법에 따라 이들 중 하나가 필요합니다. 그것과 당신이 그것을 멈추고 싶은 방법). 하지만 당신이 실제로하고있는 일을 모르는 경우 어떻게 할 수 있는지 제안 할 수는 없습니다.

내 생각에 귀하의 활동에서 서비스의 바인딩을 해제하지 않아 서비스가 안드로이드 시스템에 의해 자동으로 재시작 될 것입니다. 즉, 귀하의 서비스가 귀하의 활동에 필요한만큼 평가되기 때문입니다. 추측을 확인하려면 logcat 출력을 여기에 게시하십시오.

+0

감사 마크, 내 응용 프로그램이 정상적으로 종료되는지 확인하고 있었는데 일부 갑작스러운 일이 발생하여 내 APP가 일부 작업 킬러 응용 프로그램에 의해 종료 된 것처럼 시작되었습니다. 활동으로 시작할 때 서비스에 전달 된 인 텐트의 플래그를 사용하여이 문제를 해결했습니다. 충돌/작업 종료 후 OS가 서비스를 다시 시작할 때 서비스는 null 의도를받습니다. – JRC

관련 문제