handler.post () 사용시기 및 새 Thread ()시기
언제 사용해야 handler.post(runnable);
하고 언제 사용해야하는지 궁금 합니다.new Thread(runnable).start();
Handler에 대한 개발자 문서에 언급되어 있습니다.
Runnable r이 메시지 큐에 추가되도록합니다. runnable은이 핸들러가 연결된 스레드에서 실행됩니다.
내가 쓸 경우이 평균을 하는가 onCreate()
의 Activity
클래스 :
Handler handler = new Handler();
handler.post(runnable);
그런 다음 runnable은 별도의 스레드 또는 활동의 스레드에서 호출됩니까?
Handler.post()
UI 스레드에서 작업을 수행 할 때마다 사용해야합니다 .
따라서 (별도의 스레드에서 실행되는) 콜백에서 TextView
의 텍스트 를 변경하려는 경우 Handler.post()
.
Android에서 다른 많은 UI 프레임 워크와 마찬가지로 UI 요소 (위젯)는 메인 스레드에서만 수정할 수 있습니다.
편집 : 장기 실행 작업의 예
mHandler = new Handler();
new Thread(new Runnable() {
@Override
public void run () {
// Perform long-running task here
// (like audio buffering).
// you may want to update some progress
// bar every second, so use handler:
mHandler.post(new Runnable() {
@Override
public void run () {
// make operation on UI - on example
// on progress bar.
}
});
}
}).start();
물론 수행하려는 작업이 정말 길고 그 동안 사용자가 다른 앱으로 전환 할 위험이있는 경우 서비스 사용을 고려해야합니다 .
구체적인 질문에 답하려면 :
onCreate of Activity 클래스에서 다음과 같이 작성하면 이것이 의미합니까?
핸들러 핸들러 = new Handler () hanlder.post (runnable); 그러면 runnable이 별도의 스레드에서 호출되거나 활동의 스레드에서 호출됩니까?
아니에요. Runnable은 메인 스레드 자체에서 호출됩니다. 핸들러는 첨부 된 스레드 (생성 된 위치)에 메시지를 게시하는 데 사용됩니다. 자체적으로 스레드를 생성하지 않습니다. 귀하의 예제에서 메인 스레드 (Activity.OnCreate ()가 호출되는 곳)에 핸들러를 만들었으므로 이러한 핸들러에 게시 된 모든 메시지는 메인 스레드에서만 실행됩니다.
예를 들면 다음과 같습니다.
mHandler = new Handler();
new Thread(new Runnable(){
@Override
public void run () {
mHandler.post(new Runnable() {
@Override
public void run () {
mUiView.setX(x);
}
});
}
}).start();
또는 핸들러를 건너 뛰고 뷰에서 직접 post 메소드를 사용할 수 있습니다.
new Thread(new Runnable(){
@Override
public void run () {
mUiView.post(new Runnable() {
@Override
public void run () {
mUiView.setX(x);
}
});
}
}).start();
이것은 차이점을 설명하는 좋은 글입니다 . post 메소드는 정확히 무엇을합니까?
use handler.post()
when you want to post the code (usually from background thread) to the main thread. Yea, POST,just like you, post a letter to someone. With the help of handler the code will be executed ASAP i.e. almost immediately.
ReferenceURL : https://stackoverflow.com/questions/15136199/when-to-use-handler-post-when-to-new-thread
'program story' 카테고리의 다른 글
Heroku의 임시 파일 시스템을 사용하는 방법 (0) | 2021.01.06 |
---|---|
ADT를로드 할 때 "Android SDK에는 Android 개발자 툴킷 버전 XX.XX 이상이 필요합니까?"라는 오류가 표시되는 이유는 무엇입니까? (0) | 2021.01.06 |
텍스트 영역에서 모든 스타일 (테두리, 글로우) 제거 (0) | 2021.01.06 |
TypeError : worker ()는 0 개의 위치 인자를 받지만 1이 주어졌습니다. (0) | 2021.01.06 |
'System.Web.Http.GlobalConfiguration'의 형식 이니셜 라이저에서 예외가 발생했습니다. (0) | 2021.01.06 |