runonuithread 예제

처리기는 메시지를 만들고 자동으로 루퍼 큐에 추가하는 편리한 메서드가 있습니다. 예를 들어 post() 메서드는 메시지를 만들고 루퍼 큐의 끝에 추가합니다. 활동이 끝나면 활동에서 결과를 다시 얻고 싶을 때가 있습니다. 예를 들어 사용자가 연락처 목록에서 사람을 선택할 수 있는 활동을 시작할 수 있습니다. 끝나면 선택된 사람을 반환합니다. 이렇게 하려면 호출을 식별하는 두 번째 정수 매개 변수가 있는 startActivityForResult(의도, int) 버전을 호출합니다. 결과는 onActivityResult (int, int, Intent) 메서드를 통해 다시 나타납니다. 트랙볼이 이동하고 활동 내부의 뷰에서 처리되지 않은 경우 호출됩니다. 예를 들어, 포커스가 버튼에 있는 동안 트랙볼이 이동하면 버튼이 일반적으로 트랙볼 이벤트에서 아무 것도 하지 않기 때문에 여기에서 호출을 받게 됩니다. 여기서 호출은 트랙볼 이동이 DPAD 키 이벤트로 변환되기 전에 발생하며 뷰 계층 구조로 다시 전송되며 포커스 탐색과 같은 지점에서 처리됩니다. 참고 : 데이터를 저장하기위한 장소로 호출되는이 방법을 계산하지 마십시오! 예를 들어 활동이 콘텐츠 공급자의 데이터를 편집하는 경우 이러한 편집 내용은 여기가 아닌 onPause() 또는 onSaveInstanceState(번들)에서 커밋되어야 합니다. 이 메서드는 일반적으로 활동과 연결 된 스레드 와 같은 리소스를 사용 하도록 구현 되므로 소멸 된 활동 응용 프로그램의 나머지 는 여전히 실행 하는 동안 이러한 것 들을 떠나지 않습니다. 시스템이 이 메서드(또는 다른 방법)를 호출하지 않고 활동의 호스팅 프로세스를 단순히 죽이는 상황이 있으므로 프로세스가 끝난 후에도 유지되도록 의도된 작업을 수행하는 데 사용해서는 안 됩니다.

이 옵션에 대한 SimpleApp 예제 코드는 여기에서 찾을 수 있습니다 (이클립스 프로젝트 ZIP 파일). 일반 모션 이벤트는 조이스틱 움직임, 마우스 가리키기, 트랙 패드 터치, 스크롤 휠 이동 및 기타 입력 이벤트를 설명합니다. 모션 이벤트의 MotionEvent#getSource()는 수신된 입력 클래스를 지정합니다. 이 메서드의 구현은 이벤트를 처리하기 전에 소스의 비트를 검사해야 합니다. 다음 코드 예제에서는 이 작업을 수행하는 방법을 보여 주며 있습니다. 사용자가 패널 메뉴를 열 때 호출됩니다. 메뉴가 한 유형에서 다른 유형으로 변경될 때도 호출될 수 있습니다(예: 아이콘 메뉴에서 확장된 메뉴로). 다음 활동으로 전환하는 동안 메시지 처리가 보장되지 않으면 활성 개체에서 사용할 수 있습니다.

예를 들어 유지 된 상태가 AsyncTask인 경우 다음 인스턴스의 onCreate (android.os.Bundle)를 실행할 때까지 호출 작업 (예 : AsyncTask.onPostExecute (결과)))의 호출이 호출되지 않음을 보장합니다.