반응형
안녕하세요. 돼지왕 왕돼지입니다.
오늘은 Handler 를 사용하는 방법에 대해 알아보겟습니다.
Handler 를 왜 사용하나요?
안드로이드의 기본 정책으로 Main Thread 가 아닌 thread 에서는 UI 를 건들 수 없습니다. 그래서 Handler 를 통해서 thread 간의 Communication을 하는 것입니다. 핸들러는 핸들러를 생성한 Thread 에서 기본적으로 동작하기 때문에 UI 를 건들 수 있습니다.
APIs
public void Handler.handleMessage( Message msg )
-> Looper 가 Message Queue에서 Message 하나를 꺼내 이 함수에 전달해줍니다.
2012/02/18 - [프로그래밍 놀이터/안드로이드] - [Android/안드로이드] Looper 에 대해 알아봅시다.
boolean Handler.sendEmptyMessage (int what)
boolean Handler.sendMessage (Message msg)
boolean Handler.sendMessageAtFrontOfQueue (Message msg)
boolean Handler.sendMessageAtTime (Message msg, long uptimeMillis)
-> 절대시간에 Message 전달
boolean Handler.sendMessageDelayed (Message msg, long delayMillis)
-> 경과시간 후 Message 전달
boolean Handler.postAtTime (Runnable r, long uptimeMillis)
boolean Handler.postDelayed (Runnable r, long delayMillis)
boolean Handler.post (Runnable action)
boolean Handler.postDelayed (Runnable action, long delayMillis)
[Message 관련]
sample code.
new AlertDialog.Builder(.this)
.setTitle("Question")
.setMessage("Do you want upload?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener(){
public void onClick(DIalogInterface dialog, int whichButton){
mHandler.sendEmptyMessageDelayed(0,10);
}
})
.setNegativeButton("No", null)
.show();
Handler mHandler = new Handler(){
public void handleMessage(Message msg){
if (msg.what == 0){
doUpload();
}
}
}
void doUpload(){
for (int i = 0; i < 20; i++){
try { Thread.sleep(100); } catch (InterruptedException e) { ; }
}
Toast.makeText(this, "Completed.", 0).show();
}
로그인 없이 추천 가능합니다. 손가락 꾸욱~
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] Custom Dialog & Popup Window. (0) | 2012.02.18 |
---|---|
[Android/안드로이드] Looper 에 대해 알아봅시다. (0) | 2012.02.18 |
[Android/안드로이드] ANR 에 대해 알아봅시다. (0) | 2012.02.18 |
[Android/안드로이드] Progress Dialog sample code. (0) | 2012.02.18 |
[Android/안드로이드] Network & Internet 에 대해 알아봅시다. (0) | 2012.02.18 |
댓글