본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] Handler 사용하기.

by 돼지왕 왕돼지 2012. 2. 18.
반응형


안녕하세요. 돼지왕 왕돼지입니다.
오늘은 Handler 를 사용하는 방법에 대해 알아보겟습니다.


Handler 를 왜 사용하나요?


안드로이드의 기본 정책으로 Main Thread 가 아닌 thread 에서는 UI 를 건들 수 없습니다. 그래서 Handler 를 통해서 thread 간의 Communication을 하는 것입니다. 핸들러는 핸들러를 생성한 Thread 에서 기본적으로 동작하기 때문에 UI 를 건들 수 있습니다.



APIs


public void Handler.handleMessage( Message msg )
  -> LooperMessage 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();
}

 

로그인 없이 추천 가능합니다. 손가락 꾸욱~






반응형

댓글