안드로이드 핸들러 예제

처리기는 여기에서 찾을 수 있는 다양한 방법으로 메시지 조작이 가능합니다 https://developer.android.com/reference/android/os/Handler.html. 참고: HandlerThread는 리소스를 해제하고 스레드 실행을 중지하려면 myHandlerThread.quit()를 호출해야 합니다. Android는 비동기 처리를 수행하기 위해 Thread 클래스의 사용을 지원합니다. 안드로이드는 또한 백그라운드에서 뭔가를 수행하기 위해 java.util.concurrent 패키지를 제공합니다. 예를 들어 ThreadPools 및 실행기 클래스를 사용 하 여 있습니다. 처리기, 스레드 및 실행 가능한 예제의 다른 종류를 표시 하기 위해 Android 테스트 프로젝트-HandlersExample를 만들었습니다. 아래의 기본 코드 부분을 붙여 넣습니다. 그것은 많은 코멘트를 가지고, 그래서 모든 자명해야한다. 이 코드를 실행하고 처리기를 실험하십시오. 이 소스 코드는 무겁게 지금 오래된 책을 기반으로, 안드로이드 4.4 응용 프로그램 개발. 어젯밤 Android에서 스레드와 처리기를 살펴보고 있었는데 스레드 / 실행 가능한 핸들러로 메시지를 보내는 방법에 대한 비교적 간단한 예입니다. 기본적으로 AsyncTask 작업은 시퀀스를 실행합니다(Android 3.0보다 높은 Android 버전의 경우). 순서대로 비동기 태스크를 실행하려면 AsyncTask.THREAD_POOL_EXECUTOR를 첫 번째 매개 변수로 지정하는 executeOnExecutor() 메서드를 사용합니다.

좋은 사용자 환경을 제공하려면 Android 응용 프로그램에서 실행 속도가 느린 모든 작업을 비동기적으로 실행해야 합니다. 이것은 자바 언어 또는 안드로이드 프레임 워크의 동시성 구문(s)을 통해 보관할 수 있습니다. 잠재적으로 느린 작업은 네트워크, 파일 및 데이터베이스 액세스 및 복잡한 계산과 같습니다. 마지막으로 handler.handleMessage()는 들어오는 각 메시지에 대한 상태 코드를 확인합니다. 상태 코드가 TASK_COMPLETE인 경우 작업이 완료되고 메시지의 PhotoTask 개체에 비트맵과 ImageView가 모두 포함됩니다. Handler.handleMessage()가 UI 스레드에서 실행중이므로 비트맵을 ImageView로 안전하게 이동할 수 있습니다. 처리기에는 두 가지 방법이 있습니다. 이 코드에 @SuppressLint 개의 추가 를 추가해야했습니다. 핸들러에 대해 아직 잘 알지 못하므로 왜 필요한지 살펴봐야합니다. 나는 안드로이드 스튜디오가 처리기를 정적 필드로 선언해야한다는 것을 알고 있다. (주석을 추가하는 것은 100% 필요하지는 않지만 여기에 잠재적인 문제가 있음을 상기시켜 줍니다.) 참고: onLooperPrepared()가 호출될 때 처리기를 인스턴스화했습니다.

Comments are closed.