관련 안드로이드 서비스의 개요

로부터 네티즌 의견

1, 사용

startService는 주로 의사 소통을하지 않는, 백그라운드 작업을 수행하는 서비스를 시작하는 데 사용되는 서비스의 시작. stopService 사용 중지 서비스
bindService는 의사 소통 서비스를 시작 서비스의 시작. unbindService 사용 중지 서비스
startService는 bindService이 stepService 및 unbindService를 사용해야합니다 서비스 중 서비스를 시작할
라이프 사이클 서비스도 연속적으로 주어집니다 차이입니다 시작하는 위의 세 가지 방법.

서비스 및 스레드 간의 제 2 차이

이 스레드를 사용하는 것이 편리하기 때문에 많은 경우에, 당신은 서비스에 비해, 대신 스레드, 왜 서비스를 요청할 수 있습니다
설명해 이하 훨씬 더 편리하고 상세한.

1) :. 스레드 스레드 실행은 CPU의 할당의 기본 단위 인 최소 단위이다. 스레드는 일부 비동기 작업을 수행 할 수 있습니다.

2) 서비스 :. 서비스하는 메커니즘입니다 안드로이드, 그것은, 로컬 서비스의 경우 실행시 다음 해당 서비스는 메인 프로세스의 주 스레드에서 실행됩니다. 예를 들면 :에서 onCreate, ONSTART이 기능은 기본 프로세스의 주 스레드에서 실행하는 호출 시스템입니다. 되어 RemoteService 경우, 해당 서비스는 주 스레드에서 실행하는 프로세스의 독립적입니다. 그래서 반 센트와 스레드 그렇게, 왜 우리가 서비스를 사용하는 경우? 사실, 안드로이드 시스템과 관련이 메커니즘은, 우리가 스레드 획득! 아무 상관없는, 스레드로 서비스를 이해하지 않습니다. 스레드는 run 메소드의 정지 스레드 또는 스레드에 주도권을 쥐고하지 않는 경우 마무리 된 후에 활동이 완료되지 않은 경우, 다음도 구현되어 스레드 있다고하는 수단, 활동 독립적으로 실행됩니다. 그래서 문제가있을 것입니다 : 활동이 마무리되면 더 이상 참조의 스레드를 개최합니다. 다른 한편으로는, 당신은에서 다른 스레드 작업에서 같은를 제어 할 방법이 없습니다. 예를 들면 : 당신이 계속해야하는 경우 스레드는 다음 스레드 활동 시간을 시작할 필요도 실행되고 동기화 어떤 종류의 일을 수시로 서버에 연결됩니다. 당신이 활동을 시작하는이 시간은 스레드의 생성을 제어하는 ​​활동 전에 방법입니다. 당신이 스레드의 작업을 생성하고 서비스에서 생성되는 서비스를 시작하고 제어 할 필요가있을 것이다 그래서, (어떤 활동이 동일한 서비스에 의해 제어 될 수 있기 때문에, 시스템은 해당 서비스의 인스턴스를 생성합니다)이이 문제를 해결합니다. 그래서 당신은 메시징 서비스 등의 서비스를 상상할 수있는, 당신은 Context.startService, Context.stopService, 어디든지 컨텍스트의 컨텍스트를 호출 할 수 있습니다.

3, 서비스 수명주기

ONSTART들의 OnDestroy가에서 onCreate onBind
1) 서비스의 수명주기를 시작 : 서비스를 시작하는 활동 Context.startService 방법을 호출하면, 다음에 관계없이 bindService 활동 unbindService의 사용 바인딩 또는 서비스에 바인딩 해제 여부, 서비스는 것 백그라운드에서 실행. 서비스가 여러 번 startService 방법을 시작하는 경우에서 onCreate 메서드는 ONSTART가 (호출 수 startService에 해당)를 여러 번 호출됩니다 한 번이라고, 당신은 하나를 알고 있어야한다 그래서 시스템은 서비스 (의 인스턴스를 생성합니다 stopService 호출). 본 서비스는 항상 stopService라고 할 때까지 관계없이 해당 프로그램 활동의 실행, 백그라운드에서 실행, 또는 stopSelf 방법 것입니다. 물론, 충분한 시스템 자원이 경우, 안드로이드 시스템은 가능성이 엔드 서비스로도이다.
서비스 Context.bindService 방법에 관계없이 호출 bindService 호출, 여러 번 시작을 바인딩 활동을 호출하면에서 onCreate 방법은 한 번만 호출되지만, 항상 방법이 될 수 없습니다 ONSTART : 2) 서비스의 라이프 사이클을 결합 전화. 연결이 설정되면 당신이 Context.unbindService 연결이 끊어 또는 문맥의 호출 bindService는, 시스템이 자동으로 서비스를 중지합니다 (예 : 마무리의 활동 때와 같이) 존재하지 않는 전에들의 OnDestroy 대응이 호출됩니다 호출하지 않는 한, 서비스는 항상 실행됩니다.
. 3) 활성화 및 서비스의 라이프 사이클을 바인딩 : 서비스가 시작 된 경우와 서비스가 백그라운드에서 실행됩니다 바인딩됩니다. 그리고 관계없이 통화,에서 onCreate 항상에만 해당 startService 호출 여러 번, ONSTART의 서비스가 여러 번 호출 한 번했다. UnbindService 호출 서비스를 중지하지 않으며, 서비스를 중지 stopSelf stopService 또는 서비스를 호출해야합니다.
서비스가 중지 4) 지우기 서비스 : 서비스가 종료되면들의 OnDestroy 메소드가 호출 될 때) (1, 콜 stopService, 2, 콜 stopSelf 3, 더 이상 활성화되지 바운드 연결 (없음) 어디는 생성하고 서비스에서 스레드를 실행 중지와 같은 일부 정리 작업을 수행해야합니다.

특별 참고 사항 :

1, 당신은 당신이 bindService이 서비스에 바인딩 호출 할 때, 당신은 (비록 때어 그 전화 unbindService 곳을 확인해야합니다 것을 알아야한다

활동 바인딩이 해제 될 때 자동으로 마무리하고, 서비스가 자동 정지);

2, 당신은, 이후에 서비스를 시작 startService의 사용에주의를 기울여야 사용에 확인해야

관계없이 bindService 사용 여부의 서비스 밖으로 stopService;

이 때 unbindService 첫 번째 통화는 자동으로 서비스를 종료하지 않는 경우에 상관없이 전화 주문 startService bindService의 서비스를 종료하기 위해 참고, unbindService stopService 동시에 호출을 필요로하는 서비스 종료,에 startService와 bindService를 사용하는 동안 3 후, 다음 stopService를 호출 서비스는이 시점에서 첫 번째 전화의 stopService 서비스가 종료하지 않을 경우, 중지 한 다음 자동으로 정지 (활동 마감 시간 등) 서비스 후 존재하지 않는 상황을 호출하기 전에 unbindService 또는 bindService를 호출합니다;
4, 전화기 화면을 회전시킬 때 때 때 "수평", "수직"변화의 휴대 전화 화면, 이번 경우 활동 당신은, 사실 그렇게 설립 이전 회전 bindService를 사용하여 작업을 다시하는 것입니다 자동으로 회전 회전됩니다 (문맥이 존재하지 않는) 연결을 해제합니다, 서비스 라이프 사이클에 해당하는 전술.
5 SDK 버전 2.0 이상에서 ONSTART 변화에 대응하는 거부 onStartCommand하지만 자연인 ONSTART 전에 유효. 이 방법은 SDK 2.0 이상 버전을 사용하여 응용 프로그램을 개발하는 경우, 당신은 대신 ONSTART onStartCommand 사용해야합니다.

추천

출처www.cnblogs.com/wotoufahaiduo/p/11823876.html