>  기사  >  서비스 수명주기는 무엇입니까?

서비스 수명주기는 무엇입니까?

清浅
清浅원래의
2019-05-09 14:41:2532344검색

서비스 라이프사이클은 시작된 서비스의 라이프사이클, 바인딩된 서비스의 라이프사이클, 시작되고 바인딩된 서비스의 라이프사이클, 종료 시 삭제의 네 부분으로 나뉩니다. 서비스가 중지되었습니다.

서비스 수명주기는 무엇입니까?

서비스 수명 주기

활동과 유사하며 서비스에도 시스템은 각기 다른 시점에 해당 서비스 수명 주기 함수를 호출합니다. 그러나 활동 선언 주기에 비해 서비스 선언 주기가 더 간단합니다.

(1) 시작된 서비스의 수명 주기

서비스가 Context.startService 메서드를 호출하는 활동에 의해 시작되면 상관없이 BindService를 사용하여 서비스에 바인딩하거나 unbindService를 사용하여 바인딩을 해제하는 Activity가 있는지 여부에 관계없이 서비스는 백그라운드에서 실행됩니다. 서비스가 startService 메소드에 의해 여러 번 시작되면 onCreate 메소드는 한 번만 호출되고 onStart는 startService 호출 횟수에 따라 여러 번 호출되며 시스템은 서비스 인스턴스를 하나만 생성합니다. 서비스는 stopService 또는 자체 stopSelf 메소드가 호출될 때까지 해당 프로그램의 활동이 실행 중인지 여부에 관계없이 항상 백그라운드에서 실행됩니다. 물론, 시스템 리소스가 부족한 경우 안드로이드 시스템에서도 서비스가 종료될 수 있습니다.

(2) 바인딩된 서비스의 수명 주기

서비스가 바인딩되고 Context.bindService 메서드를 호출하는 활동에 의해 시작되는 경우, BindService가 몇 번이나 호출되더라도 onCreate 메서드는 한 번만 호출되고 onStart 메서드는 절대 호출되지 않습니다. 연결이 설정되면 연결을 끊기 위해 Context.unbindService를 호출하거나 이전에 바인딩 서비스를 호출한 컨텍스트가 더 이상 존재하지 않는 한(예: 활동이 완료된 경우) 서비스는 계속 실행되며 시스템은 자동으로 서비스를 중지하고 해당 컨텍스트를 중지합니다. onDestroy가 호출됩니다.

(3) 시작되고 바인딩되는 서비스의 수명 주기

서비스가 시작되고 다시 바인딩되면 서비스는 항상 백그라운드에서 실행됩니다. 그리고 어떻게 호출되든 onCreate는 항상 한 번만 호출됩니다. 즉, startService가 호출되는 횟수에 따라 Service의 onStart가 호출되는 횟수만큼 호출됩니다. unbindService를 호출해도 서비스는 중지되지 않지만 서비스를 중지하려면 stopService 또는 서비스의 stopSelf를 호출해야 합니다.

(4) 서비스가 중지되면 서비스 지우기

서비스가 종료될 때 (1. stopService 호출; 2. stopSelf 호출 ; 3. 더 이상 바인딩된 연결이 없으면(시작되지 않음) onDestroy 메서드가 호출됩니다. 여기서는 서비스에서 생성되고 실행되는 스레드를 중지하는 등의 정리 작업을 수행해야 합니다. #🎜🎜#

위 내용은 서비스 수명주기는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.