안드로이드 스튜디오 핸들러 예제

응용 프로그램에 대한 프로세스가 만들어지면 주 스레드는 최상위 응용 프로그램 개체(활동, 브로드캐스트 수신기 등) 및 해당 프로세스가 만든 모든 창을 관리하는 메시지 큐를 실행하는 데 전념합니다. 사용자 고유의 스레드를 만들고 처리기를 통해 기본 응용 프로그램 스레드와 다시 통신할 수 있습니다. 이 작업은 이전과 동일한 게시물 또는 sendMessage 메서드를 호출하지만 새 스레드에서 수행됩니다. 그런 다음 지정된 Runnable 또는 메시지는 처리기의 메시지 큐에서 예약되고 적절한 경우 처리됩니다. 스레드 풀을 만드는 클래스를 만드는 동안 Handler 개체를 인스턴스화하고 전역 변수에 개체를 저장합니다. 처리기(루퍼) 생성자로 인스턴스화하여 UI 스레드에 연결합니다. 이 생성자는 Android 시스템의 스레드 관리 프레임워크의 또 다른 부분인 루퍼 개체를 사용합니다. 특정 루퍼 인스턴스를 기반으로 처리기를 인스턴스화하면 처리기가 루퍼와 동일한 스레드에서 실행됩니다. 예를 들어 이 작은 앱은 Android 에뮬레이터에서 어떻게 생겼는지 다음과 같습니다: 자체 스레드를 만들고 Lopper 및 MessageQueue를 제공하는 것은 문제를 처리하는 올바른 방법이 아닙니다. 따라서 Android는 프로세스를 간소화하기 위해 HandlerThread (스레드하위 클래스)를 제공했습니다. 내부적으로는 우리가 한 것과 똑같은 일을 하지만 견고한 방식으로 수행합니다. 따라서 항상 HandlerThread를 사용합니다. 나는 생활과 재미를위한 코드를 작성, 안드로이드 개발자입니다.

내부의 깨끗한 코드와 아름다운 애플 리케이션을 사랑해요. 여행과 독서를 즐길 수 있습니다. 토니아 Tkachuk에 의해 모든 게시물을 볼이 소스 코드는 무겁게 지금 오래된 책을 기반으로합니다, 안드로이드 4.4 응용 프로그램 개발. 어젯밤 Android에서 스레드와 처리기를 살펴보고 있었는데 스레드 / 실행 가능한 핸들러로 메시지를 보내는 방법에 대한 비교적 간단한 예입니다. 1 단계 – 안드로이드 스튜디오에서 새로운 프로젝트를 만들고, 파일 ⇒ 새 프로젝트로 이동하고 새로운 프로젝트를 만드는 데 필요한 모든 세부 사항을 작성합니다. 안드로이드의 비동기 작업은 백그라운드 스레드 또는 작업자 스레드가 될 스레드를 사용하여 수행됩니다. 이러한 비동기 작업의 결과는 UI 구성 요소를 업데이트해야 할 수 있습니다. 백그라운드 스레드에서 UI 구성 요소에 액세스할 수 없으므로 UI를 업데이트하기 위해 기본 스레드(UI Thread)에 액세스해야 합니다. 그래서 우리는 위의 예에서 처리기라는 안드로이드의 매우 인기 있고 강력한 개념을 사용, 우리는 처리기를 만들고 메인 스레드와 관련된 루퍼를 제공합니다. 이렇게 하면 이 처리기가 주 스레드에 연결됩니다.

Runnable을 게시하면 주 스레드의 MessageQueue에 큐에 대기한 다음 주 스레드에서 실행됩니다. 예약 메시지는 게시물 (실행 가능), postAtTime (java.lang.lang.Runn, 긴), postDelayed (실행 가능, 개체, 긴), sendEmptyMessage (int), sendMessage (메시지), 및 sendMessageAtTime (메시지, 긴) 및 sendMessageDelayed () 메시지, 긴) 메소드. 포스트 버전을 사용하면 Runnable 개체가 수신될 때 메시지 큐에서 호출되도록 큐를 누를 수 있습니다. sendMessage 버전을 사용하면 처리기의 handleMessage(Message) 메서드에서 처리되는 데이터 번들을 포함하는 메시지 개체를 큐에 대기할 수 있습니다(처리기의 하위 클래스를 구현해야 합니다).