2012-01-31 5 views
2

강제로 앱을 강제 종료하는 것은 매우 나쁘지만 클라이언트는이를 필요로한다는 것을 알고 있습니다. 나는 애플 리케이션을 강제로 재부팅을 구현해야합니다. 이것은 구현 한 방법입니다.재설정하지 않고 안드로이드 서비스를 종료하십시오

BroadcastReceiver은 내 애플리케이션의 (액티비티가 아닌) onCreate 메서드에서 만듭니다. REBOOT 명령이 방송 될 때까지 기다려야합니다. 수령 후, 나는 스레드와 서비스가 깨끗하게 종료 할 수 있도록 서비스 호출 stopSelf을 가진 다른 메시지를 방송해야합니다. 나는 그 다음 5 초 후에 AlarmManager에게 나의 주된 활동을 부르게한다. 마지막으로 내 응용 프로그램을 Process.kill(Process.myPid())으로 자살 시키십시오. 대부분의 경우 작동하며 대기중인 각 서비스에서 TERMINATE 브로드 캐스트를 기다리는 중일 때 대기 시간을 추가해야합니다. 내 문제는 이것입니다 : 로그를 검토하는 동안, 시스템이 재부팅하도록 서비스를 스케줄한다는 것을 알았습니다. 갈등이 걱정됩니다. 다시 부팅 할 기회없이 서비스를 종료 할 수있는 방법이 있습니까?

+0

이것은 이상합니다. 시스템이 자발적으로 자살 한 서비스를 stopSelf()를 통해 다시 시작한다고 말하고 있습니까? 이러한 STICKY 서비스가 있습니까? –

+0

아니요, 그 당시에는 서비스가 프로세스를 통해 삭제되어 충돌로 등록되었습니다. 나는 하리 키리에게 봉사 할 때까지 기다리지 않고 있었다. 나는 대답을했지만 정말 그것에 대한 귀하의 의견을 고맙게 여길 것입니다. – cesar

답변

0

수신자가 모든 서비스가 종료되기 전에 onDestroy() 호출을 완료 할 때까지 대기하게함으로써이 문제를 해결했습니다. 또한 Process.kill()에서 ActivityManager.killBackgroundProcesses()으로 변경되었습니다.

사이드 노트 : 나는 그것이 틀렸다는 것을 알고 있지만, 프로세스 hehehe를 실제로 죽이는 것을 정말로 느낍니다.

관련 문제