제 11 장 안드로이드 스레드와 스레드 풀

스레드뿐만 아니라, 안드로이드는 반면, HandlerThread 또한 특수 실을 같은 AsyncTask를하고 IntentService 많은있다 스레드에 중요한 역할을 재생할 수 있습니다.

AsyncTask를 스레드 풀 및 처리기를 캡슐화합니다. HandlerThread는 메시지 루프를 갖는 스레드가 내부 처리기에서 사용될 수있다. IntentService는 작업이 완료 될 때, IntentService가 자동으로 종료됩니다 서비스, 작업을 수행 할 수 HandlerThread를 사용하여 내부 IntentService입니다. IntentService 시스템이 그 임무를 확인하실 수 있도록이 될 가능성이 백그라운드 스레드, 활동의 네 가지 구성 요소, 그것은이 프로세스의 우선 순위를 낮출이 경우에는 적법 절차 인 경우, 사망 할 가능성이없는 서비스 IntentService 장점 인 시스템을 죽인다.

11.1 메인 스레드와 자식 스레드

처음부터 Android3.0 시스템은 네트워크 액세스가 자식 스레드에서 수행해야합니다 필요, 또는 네트워크 액세스 실패하고 NetworkOnMainThreadException이 예외가 발생합니다.

11.2 안드로이드 스레드 형태

11.2.1 AsyncTask를

AsyncTask를 그것은 스레드 풀에서 백그라운드 작업을 수행 한 다음 메인 쓰레드에 최종 결과의 진행 및 구현을 전달하고 주 스레드에서 UI를 업데이트 할 수 있습니다, 경량 비동기 작업 클래스입니다.

네 가지 핵심 방법 :

  1. onPreExecute ()
  2. publishProgress의 방법으로 작업 진행 상황을 업데이트 할 수 있습니다이 방법에서는 doInBackground가 (에 Params ... PARAMS), publishProgress 방법은 방법 onProgreeUpdate 호출합니다.
  3. onProgressUpdate (진행 ... 값)
  4. onPostEcecute (결과 결과)
  5. onCancelled () 작업이 취소되었을 때, 호출) (onPostExecute 호출되지 않습니다

사용 AsyncTask를, 몇 가지 제한 사항 :

  1. AsyncTask를 클래스는 메인 스레드로드해야합니다
  2. AsyncTask를 개체는 메인 스레드에서 생성해야합니다
  3. 실행하는 방법은 UI 스레드에서 호출되어야
  4. 직접 onPreExecute (), onPostExecute, doInBackground, onProgressUpdate 메소드를 호출하지 마십시오
  5. AsyncTask를 오브젝트 만에만 호출 될 수 회 수행 될 수있는 실행 메소드 회
  6. Android1.6, AyncTask 일련의 임무 전에 Android1.6는 AsyncTask를 스레드 풀 병렬 작업을 사용하기 시작하지만 시작 Android3.0, AsyncTask를로부터 순차적으로 작업을 수행 할 스레드를 사용하여. 때 Android3.0 이상 버전에서는 AsyncTask를의 executeOnExecutor 방법에 의해 병렬로 작업을 실행할 수 있습니다.

AsyncTask를 작업 차선 흐름도 :

11.2.3 HandlerThread

HandlerThread는 루퍼는 run () 메소드에서 만든, 스레드를 물려 받았다.

11.2.4 IntentService

IntentService 특별한 서비스이며, 서비스를 물려 받았다. 작업이 실행될 때 그것은 (비 UI 스레드에서 실행) 시간이 많이 걸리는 작업을 수행하는 데 사용할 수 있습니다, 그것은 자동으로 중지됩니다.

stopSelf 서비스 () 및 stopSelf (INT startID가)를 중지하는 방법은 두 가지가 있습니다. stopSelf ()는 즉시 (원칙이 결정하는 것입니다 여부를 최근 출시 된 서비스 ID와 startID가 동일) 메시지의 모든 서비스를 종료 처리 될 때까지 대기 서비스, stopSelf를 (INT startID가) 중지됩니다.

시간이 많이 소요 onHandleIntent 처리 방법에 작업을. HandlerThread 상속 처리기, 그것은 IntentService 또한 백그라운드 작업 순서를 수행하는 수단이 메시지를 처리 ​​순서와 동일하다.

원본 : 큰 상자  11 장 안드로이드 스레드와 스레드 풀


추천

출처www.cnblogs.com/chinatrump/p/11423910.html