doInBackground() 메서드에는 백그라운드 스레드에서 수행해야 하는 코딩 명령이 포함되어 있습니다. 이 메서드는 별도 스레드에서 자동으로 실행 됩니다. RxJava를 사용하면 다른 이점에 들어가지 않고도 RxJava를 통해 스레딩의 복잡성을 추상화하여 보다 성숙한 코드를 작성할 수 있는 방법을 이미 확인할 수 있습니다. 이 구현은 스레드로부터 안전합니다: 백그라운드 작업은 별도의 스레드에서 수행되고 ImageView는 항상 UI 스레드에서 조작됩니다. 이 장의 나머지 부분에서는 스레드에 대한 기본 소개를 제공하는 몇 가지 간단한 예제를 통해 작동합니다. 첫 번째 단계는 주 스레드와 별도의 스레드에서 시간이 많이 소요되는 작업을 수행하지 않는 데 관련된 위험을 강조 표시하는 것입니다. 따라서 ThreadExample라는 새 Android 프로젝트를 만들어 layout 및 조각 이름을 activity_thread_example 및 fragment_thread_example로 설정한 레이아웃 및 조각 이름을 사용하여 ThreadExampleActivity라는 단일 빈 활동을 포함하는 것으로 시작합니다. Android에서 다중 스레드 작업에 대해 자세히 알아보려면 프로세스 및 스레드 개요 가이드를 참조하세요. RxAndroid는 안드로이드에서 RxJava를 사용할 수 있으며 비동기 작업을 처리하는 것을 쉽게 만듭니다. 안드로이드에서 RxJava에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

Android 사용자 인터페이스 도구 키트는 스레드에서 안전하지 않으므로 주 스레드 이외의 스레드에서는 사용자 인터페이스를 변경해서는 안 됩니다. 사용자 인터페이스 변경 내용은 주 스레드가 아닌 다른 스레드 내에서 메시지를 보낼 수 있는 주 스레드에 처리기를 만들어 구현할 수 있습니다. Android 응용 프로그램에 대 한 응용 프로그램 클래스를 구현할 수 있습니다. AsyncTask 클래스는 백그라운드에서 명령을 실행하고 주 스레드와 다시 동기화 할 수 있습니다. 또한 실행 중인 작업의 진행 률을 보고합니다. 사용자 인터페이스를 업데이트해야 하는 짧은 백그라운드 작업에는 비동기 작업을 사용해야 합니다. Java의 실행기 서비스는 고정(구성 가능한) 스레드 수를 만들고 동시에 작업을 실행합니다. 서비스는 결국 invokeAll() 메서드를 통해 모든 결과를 반환 하는 Future 개체를 반환 합니다. 다음으로 ThreadExampleActivity.java 파일을 편집 패널에 로드하고 단추 보기가 사용자가 터치할 때 호출되는 buttonClick() 메서드를 구현하는 코드를 추가합니다. 여기서 목표는 주 스레드에서 긴 작업을 수행하는 문제를 설명하는 것이기 때문에 TextView 개체에 다른 텍스트를 표시하기 전에 코드가 20초 동안 일시 중지됩니다.

buttonClick() 메서드는 별도의 스레드 내에서 수행되어야 합니다. 그러나 서비스가 UI 스레드에서 실행되기 시작되므로 스레딩을 직접 관리해야 합니다. 또한 네트워크 호출이 완료되면 서비스가 중지되었는지 확인해야 합니다. 서비스와 마찬가지로 IntentService는 별도의 스레드에서 실행되며 작업을 완료한 후 자동으로 중지됩니다. 처리기는 Android Handler 클래스에서 하위 클래스로 분류되며 스레드에서 필요할 때 실행할 Runnable을 지정하거나 메시지가 있을 때 호출되는 handlermessage() 콜백 메서드 내의 handleMessage() 콜백 메서드를 재정의하여 사용할 수 있습니다. 스레드에 의해 처리기로 전송됩니다. Android는 스레드를 처리하고 관리하는 여러 가지 방법을 제공하지만 그 중 어느 것도 실버 글머리 기호가 아닙니다.