시스템에 의해 멈추었을 때 안드로이드 서비스가 어떻게 동작하는지에 대한 질문이 있습니다. 내 이해에 따라 시스템 (OS)이 필요한 리소스로 인해 서비스를 중지하면 다시 시작하는 것이 시스템의 책임입니다. 이 시나리오에서 시스템은 서비스를 중지 할 때 onDestroy()를 호출하지 않고 서비스를 시작할 때 onCreate()를 호출하지 않고 onStartCommand()를 호출합니다.시스템에 의해 중지되었을 때 안드로이드 서비스가 응답하는 방법
onStartCommand()에서 스레드를 만들 경우 시스템이 서비스를 중지 할 때 스레드를 정리하는 방법은 무엇입니까? 스레드를 중지하지 않으면 onStartCommand()는 새 스레드를 만듭니다. 생각해 보면, onStartCommand() 매개 변수 (intent, flags 및 startId)가 나타날 수 있습니다. 리소스가 필요하기 때문에 시스템을 중지 한 후 서비스가 시작될 때 시스템이 다를 수 있습니다. 어떤 사람이 서비스가 startService() 명령 또는 시스템 자체 (중지 후)에 의해 시작될 때 매개 변수의 차이점을 말해 줄 수 있습니까?
onCreate()에서 스레드를 만들 수 있지만 시스템이있을 때 스레드가 여전히 있는지 여부는 확실하지 않습니다. 서비스를 중지합니다. 이런 종류의 시나리오를 처리하는 가장 좋은 방법은 무엇입니까? 시스템 (OS)을 인해 필요한 자원에 서비스를 중지하는 경우
감사
내 이해 당으로
감사합니다. CommonsWare. 따라서 시스템은 서비스 중단 방법에 관계없이 항상 onCreate()를 호출합니다. 불행히도, 시스템이 서비스를 중지하지만 onDestroy() 또는 onCreate()를 호출하지 않고 onStartCommand()를 직접 호출하면 인스턴스를 (로깅을 통해) 보았습니다. 이러한 시나리오를 어떻게 처리합니까? – Androidme
@bsengar : "불행히도, 시스템이 서비스를 중지하지만 onDestroy() 또는 onCreate()를 호출하지 않고 onStartCommand()를 직접 호출하면 인스턴스를 보았습니다 (로깅을 통해)"- 샘플 응용 프로그램을 제공하고 이 문제를 나타내는 문제를 재현 할 수 있습니다. – CommonsWare
샘플 서비스를 작성하고 onCreate(), onStartCommand() 및 onDestroy()에 로그온하여 쉽게 테스트 할 수 있습니다. 부팅 할 때 서비스를 시작하십시오. 약 10 시간 후에 서비스 상태를 확인하면 서비스가 2 시간 동안 실행될 수 있습니다. 그러나 로그 파일을 확인하면 추가 onStartCommand() 호출이 아니라 onDestroy() 또는 onCreate() 호출을 볼 수 없습니다. – Androidme