2012-12-21 6 views
0

모든 :Android, 인스턴스 변수 인스턴스, 스레드?

내가 다른 인스턴스 변수와 함께 선언 및 인스턴스화 핸들러가 코드를 공부하고

:

public class SomeActivity extends Activity { 
    Handler handler = new Handler(); // What thread is this taking place on? 
    // rest of class omitted 
} 

그래서는 UI 스레드에서 인스턴스화되고 있습니까? ProgressBar에 Runnable을 게시하는 데 사용되므로 ProgressBar를 UI 스레드에서만 조작해야한다는 것을 이해합니다.

응용 프로그램의 활동이 응용 프로그램의 UI 스레드에서 실행

안드로이드 워드 프로세서에서 onCreate (에서 만든 뭔가) 인 것을 말한다. 일단 UI가 활동의에서 onCreate() 방법, 예를 들어, 인스턴스화, 다음 UI와의 모든 상호 작용은. "UI 스레드에서

를 실행해야하지만이에서 onCreate 전에 일어나고있다().

어떤 정보를

감사합니다,

마이클 너무

+0

클래스 수준 필드의 초기화를 제외하고는 onCreate() 전에 아무 일도 발생하지 않습니다. 새로운 Handler()가 있는데 아무 것도하지 않습니다. Runnable은 어디에 게시됩니까? 질문에 대답하기 위해 Handler는 Activity 컨텍스트 내에서 선언되므로 Runnable은 UI 스레드에서 실행됩니다. 그렇지 않은 경우, 뷰를 터치하면 (자), 예외가 슬로우됩니다. – Simon

답변

0

IT는 UI 스레드에서 인스턴스화되고?

예. 핸들러는 스레드가 생성 된 스레드에 존재합니다. UI 요소에 액세스 할 수 있도록 기본/UI 스레드에서 작업을 만들고 있습니다.

그러나 이것은 onCreate() 전에 발생합니다.

이것은 처리기 스레드가 실행되는 데 영향을 미치지 않습니다.

+0

설명해 주셔서 감사합니다. –

+0

핸들러는 문서화가 잘되어 있지 않지만 Handlers and Loopers에 대한보다 기술적 인 설명에 관심이 있다면 [nice article] (http://mindtherobot.com/blog/159/android-guts-intro)입니다. 루프 투 어와 핸들러 /). – Sam

0

특별히 백그라운드 스레드에서 실행하지 않는 한 모든 것이 주 스레드 (UI 스레드라고도 함)에서 발생합니다. 예, 처리기는 UI 스레드에서 생성됩니다.

+0

좋아, 고마워, 아이 그린. –