안드로이드 runonuithread 예제

개발자는 해당 스레드에서 실행되는 코드가 단일 스레드에서 실행되는 경우 (5 초 이상) 사용자 상호 작용을 방지하면 Android가 악명 높은 Android 응답되지 않음 (ANR) 오류를 발생시킨다는 것을 빠르게 알게됩니다. 키가 해제되고 활동 내의 뷰에서 처리되지 않은 경우 호출됩니다. 예를 들어, TextView가 TextView 내부에 있는 동안 키 를 누르면 TextView가 자체 키 누를을 처리하기 때문에 다른 개체에 대한 탐색이 아닌 경우 이벤트가 트리거되지 않습니다. 응용 프로그램이 표시될 때마다 응용 프로그램의 상태에 따라 관리되는 대화 상자를 업데이트해야 하는 경우 이를 재정의합니다. 예를 들어 시간 선택 대화 상자를 현재 시간으로 업데이트할 수 있습니다. 슈퍼 클래스의 구현을 통해 호출 해야 합니다. 기본 구현은 이 활동을 대화 상자의 소유자 활동으로 설정합니다. runOnUiThread를 사용 하 여 고려할 때 장단점은 무엇입니까. 먼저 이 메서드는 활동에 정의되어 있습니다.

즉, UI가 아닌 스레드에는 이 메서드를 활용하려면 Activity를 가져오는 몇 가지 지식이나 수단이 있어야 합니다. 이 예제에서는 UI가 아닌 스레드 클래스가 Activity의 내부 클래스로 정의되므로 다소 쉽습니다. UI가 아닌 스레드 클래스가 다른 곳에 정의되면 어떻게 됩니까? 다시 말하지만, 비 UI 와 UI 스레드 간의 통신에서 다루려는 첫 번째 옵션은 runOnUiThread() 메서드를 사용하는 것입니다. Android의 활동 클래스에서 정의된 이 방법을 찾을 수 있습니다. 작업 StackBuilder 클래스 및 활동 메서드 getParentActivityIntent(), 해야 upRecreateTask (android.content.Intent), 및 navigateUpTo (android.content.Intent) 사용자 지정 탐색을 구현 하는 데 도움이 에 대 한 참조. Android SDK의 앱 내비게이션 샘플 응용 프로그램도 참조할 수 있습니다. 참고: Android는 일반적으로 앱을 디자인/코딩할 때 많은 옵션을 제공합니다. 나는이 5 가지 접근 법을 제공했지만,이 게시물을 읽는 다른 안드로이드 개발자가 추가 옵션 (또는 조정 / 콤보 솔루션 등)을 제공하도록 권장합니다. 또한, 각 접근 방식의 장단점에 대한 의견을 제공하십시오. 처리기는 스레드를 관리하기 위한 Android 시스템의 프레임워크의 일부입니다. 처리기 개체는 메시지를 수신하고 메시지를 처리하는 코드를 실행합니다.

일반적으로 새 스레드에 대한 처리기를 만들지만 기존 스레드에 연결된 처리기를 만들 수도 있습니다. 처리기를 UI 스레드에 연결하면 메시지를 처리하는 코드가 UI 스레드에서 실행됩니다. 예를 들어, 다음은 비트맵을 디코딩하고 상위 개체 PhotoTask에 저장하는 백그라운드 스레드에서 실행되는 Runnable입니다. 실행 가능한 상태 코드 DECODE_STATE_COMPLETED도 저장합니다. 새 문서를 만들 때 백업 데이터베이스 항목 또는 파일이 즉시 만들어집니다. 예를 들어 사용자가 새 전자 메일을 작성하도록 선택하면 데이터를 입력하는 즉시 해당 전자 메일에 대한 새 항목이 만들어지므로 해당 시점 이후에 다른 활동으로 이동하면 이 전자 메일이 이제 초안 목록에 표시됩니다.