2012-04-12 2 views
2

이것은 매우 어리석은 질문 일 가능성이 높지만 Handlers의 요점을 완전히 이해할 수는 없다는 것을 알고 있습니다. 그 생각은 핸들러가 메인 쓰레드에서 실행된다는 것이고, 그것들은 worker 쓰레드와 함께 가장 일반적으로 사용되는 것처럼 보입니다.하지만 worker 쓰레드는 Handler와 함께 쓰레드를 생성하는 Activity 대신에 호출하는 Activity에서 메소드를 호출 할 수 없습니다. 메시지를 받으려면?핸들러 포인트?

다시, 나는 내 질문의 무지를 사과하지만 온라인에서 발견 한 것은 모두 Handlers와 Pro Android 3 책을 사용하는 방법에 대한 자습서로 내 질문을 명확히하지 못합니다 (또는 나는 너무 이해하기가 멍청합니다. 제대로)!

또는 문제없이 UI를 수정할 수있는 AsyncTasks를 사용하는 이유는 무엇입니까?

감사합니다.

답변

5

처리기 (또는 메시지)를 사용할 때 각 작업은 "직렬화"됩니다. 동시성이 없으므로 잠금 할 필요가 없다는 장점이 있습니다. 메시지 기반 시스템을 멀티 스레드 메시지 시스템보다 안정적으로 만드는 것이 훨씬 쉽습니다. AsyncTask를이 핸들러를 사용하는 방법으로

, 직접 당신에게 더 많은 유연성을 제공 핸들러를 사용하여 너무

. 예를 들어 앞으로 보낼 메시지를 예약 할 수 있습니다. 또는 예약 된 메시지를 중단 할 수 있습니다.

처리기는 매우 강력한 도구입니다.

+0

더 선명합니다. 나는 AsyncTasks가 Handlers를 사용한다는 것을 몰랐다. 그래서, AsyncTask를 사용하는 것은 특정 Handler를 작성하고 사용하기위한 속기와 같습니다. –

+1

AsyncTask는 스레딩, 핸들러, 메시지, 메시지 대기열과 같은 주제를 추상화하여 개발자에게 "보이지 않게"만듭니다. UI 스레드 외부에서 장시간 작업을 수행 할 수있는 편안한 방법입니다. 핸들러를 사용하면 "완전한"제어가 가능합니다. – 207

+1

@SoManyGoblins 네, asynctask는 멋진 핸들러 + 스레드입니다 :) 그리고 당신은 동시 프로그래밍을 망치고 싶지 않아요. :) +1 – Warpzit