안드로이드 다운로드 스레드

On mayo 12, 2019 by adminmg

이 구현은이 루프를 사용 합니다 .이 isAlive에서 대기를 호출 합니다. 스레드가 종료 될 때의 모든 메서드를 호출 합니다. 응용 프로그램을 사용 하지 않는 것이 좋습니다 대기, 알림 또는 알림 모든 스레드 인스턴스에 있습니다. 예를 들어 작업자 스레드의 UI 개체에 대 한 직접 참조를 보유 하는 앱을 가정해 보겠습니다. 작업자 스레드의 개체에는 뷰에 대 한 참조가 포함 될 수 있습니다. 그러나 작업이 완료 되기 전에 뷰 계층 구조에서 뷰가 제거 됩니다. 이 두 작업이 동시에 발생 하면 참조는 View 개체를 메모리에 유지 하 고 속성을 설정 합니다. 그러나 사용자는이 개체를 볼 수 없으며 응용 프로그램은 개체에 대 한 참조가 사라졌는지 확인 합니다. 디자인에 따라 Android 보기 개체는 스레드로부터 안전 하지 않습니다. 앱은 기본 스레드에서 UI 개체를 만들고 사용 하 고 소멸 시킬 것으로 예상 됩니다.

주 스레드가 아닌 스레드에서 UI 개체를 수정 하거나 참조 하려고 하면 예외, 자동 오류, 크래시 및 기타 정의 되지 않은 잘못 된 동작이 발생할 수 있습니다. AsyncTask를 사용 하면 사용자 인터페이스에서 비동기 작업을 수행할 수 있습니다. 작업자 스레드에서 차단 작업을 수행한 다음 스레드 및/또는 처리기를 직접 처리할 필요 없이 UI 스레드에 결과를 게시 합니다. 이 문제에 대 한 자세한 내용 및 배경 안 드 로이드 개발자 사이트에 머리. 고도로 평행한 분산 작업으로 줄일 수 있는 특정 유형의 작업이 있습니다. 예를 들어, 이러한 작업 중 하나는 8 메가 픽셀 이미지의 각 10 × 9 블록에 대 한 필터를 계산 하는 것입니다. 이렇게 만든 작업 패킷의 양이 엄청나게 많기 때문에 AsyncTask 및 HandlerThread는 적절 한 클래스가 아닙니다. AsyncTask의 단일 스레드 특성은 모든 스레드 풀링 작업을 선형 시스템으로 전환 합니다. 반면에 HandlerThread 클래스를 사용 하면 프로그래머가 스레드 그룹 간의 부하 분산을 수동으로 관리 해야 합니다.

이 스레드가 속해 있는 스레드 그룹을 반환 합니다. 이 메서드는이 스레드가 중지 된 경우 null을 반환 합니다. 애니메이션이 나 화면 업데이트가 발생 하는 동안 시스템은 16ms 마다 화면을 그리는 일을 담당 하는 작업 블록을 실행 하 여 초당 60 프레임으로 매끄럽게 렌더링을 시도 합니다. 시스템에서이 목표를 달성 하려면 주 스레드에서 UI/뷰 계층 구조를 업데이트 해야 합니다. 그러나 주 스레드의 메시징 큐에 주 스레드가 업데이트를 충분히 빠르게 완료 하는 데 너무 많거나 너무 긴 작업이 포함 된 경우 앱은이 작업을 작업자 스레드로 이동 해야 합니다. 주 스레드가 16ms 내에서 작업 블록 실행을 완료할 수 없는 경우 사용자는 입력에 대 한 지연 또는 UI 응답성의 부족을 관찰할 수 있습니다. 주 스레드가 약 5 초 동안 차단 되 면 시스템은 응용 프로그램 응답 없음 (ANR) 대화 상자를 표시 하 여 사용자가 앱을 직접 닫을 수 있도록 합니다. 사용 하 여 ui가 아닌 스레드는 UI 스레드에서 작업을 실행 하도록 요청 하려는 요구를 전달 합니다. 이 작업은 요청 된 동작을 UI 스레드의 이벤트 큐에 게시 하 여 내부적으로 수행 됩니다. 그럴 수 있으면 UI 스레드가 이벤트 큐에서 작업 메시지를 선택 하 고 UI 변경을 수행 합니다.

Comments are closed.