Handler - android.os.Handler



원문링크 : Handler


Class Overview



핸들러는 스레드의 MessageQueue 와 관련된 Runnable 객체와 Message 객체를 전송하고 처리할 수 있습니다. 각 핸들러 인스턴스는 하나의 싱글 스레드와 그 스레드의 메시지 큐에 연결되어있습니다. 새로운 핸들러를 생성하면 핸들러가 만들어지는 시점에, 그 핸들러는 핸들러가 만들어진 스레드의 스레드 / 메시지 큐에 바인딩 됩니다. 핸들러는 message 와 runnable 을 그 메시지 큐에 전달하고, 그것들은 메시지 큐에서 나오게 됨으로써 실행됩니다.


핸들러에는 두가지의 주 용도가 있습니다.

(1) 미래의 어떤 시점에 message 와 runnable 이 실행될 수 있도록 스케쥴 하는 것.

(2) 자신의 스레드가 아닌 다른 스레드에서 수행 할 액션을 enqueue 하는 것.


스케줄링 메시지는 post(Runable), postAtTime(Runnable, long), PostDelayed(Runnable, long), sendEmptyMessage(int), sendMessage(Message), sendMessageAtTime(Message, long), sendMessageDelayed(Message, long) 메소드를 통해 완료됩니다. post 버전은 그들이 받았을 때(Runnable 을 전달 받았을때..), Runnable 객체가 메시지 큐에 의해 호출 될 수 있도록 enqueue 해줍니다sendMessage 버전은 핸들러의 handleMessage(Message) 메소드에 의해, 데이터의 번들이 포함된 Message 객체가 처리될 수 있도록 enqueue 해줍니다. (핸들러의 subclass 구현이 필요합니다.)


핸들러로 posing 하거나 sending 할때, 메시지 큐가 준비되자 마자 해당 아이템이 처리 되도록 할 수 있습니다. 또는 처리되기 전에 특정 딜레이를 줄수도 있고, 절대 시간(상대 시간의 반대)에 처리되도록 할 수 있습니다. 뒤의 두가지는 timout 을 구현하거나, tick, 다른 시간에 기반한 행동을 구현할 수 있습니다.


프로세스가 애플리케이션에서 생성 될 때, 메인 스레드는 탑-레벨 애플리케이션 객체와 그들이 만든 windows 의 관리를 담당하는 '메시지 큐'를 실행하는데 전념합니다.


스레드를 따로 만들어도, 핸들러를 통해 메인 애플리케이션 스레드와 다시 통신할 수 있습니다. 이것은 이전과 같은, 하지만 새로운 스레드에서 같은 post 또는 sendMessage 메소드를 호출 함으로써 수행합니다. 주어진 Runnable 또는 Message 는 핸들러의 메시지 큐에서 스케쥴 되고, 적절한 때에 처리됩니다.




Summary


Nested Classes
interfaceHandler.CallbackCallback interface you can use when instantiating a Handler to avoid having to implement your own subclass of Handler. 
Public Constructors
Handler()
Default constructor associates this handler with the Looper for the current thread.
Handler(Handler.Callback callback)
Constructor associates this handler with the Looper for the current thread and takes a callback interface in which you can handle messages.
Handler(Looper looper)
Use the provided Looper instead of the default one.
Handler(Looper looper, Handler.Callback callback)
Use the provided Looper instead of the default one and take a callback interface in which to handle messages.
Public Methods
voiddispatchMessage(Message msg)
Handle system messages here.
final voiddump(Printer pw, String prefix)
final LoopergetLooper()
StringgetMessageName(Message message)
Returns a string representing the name of the specified message.
voidhandleMessage(Message msg)
Subclasses must implement this to receive messages.
final booleanhasMessages(int what, Object object)
Check if there are any pending posts of messages with code 'what' and whose obj is 'object' in the message queue.
final booleanhasMessages(int what)
Check if there are any pending posts of messages with code 'what' in the message queue.
final MessageobtainMessage(int what, int arg1, int arg2)
Same as obtainMessage(), except that it also sets the what, arg1 and arg2 members of the returned Message.
final MessageobtainMessage()
Returns a new Message from the global message pool.
final MessageobtainMessage(int what, int arg1, int arg2, Object obj)
Same as obtainMessage(), except that it also sets the what, obj, arg1,and arg2 values on the returned Message.
final MessageobtainMessage(int what)
Same as obtainMessage(), except that it also sets the what member of the returned Message.
final MessageobtainMessage(int what, Object obj)
Same as obtainMessage(), except that it also sets the what and obj members of the returned Message.
final booleanpost(Runnable r)
Causes the Runnable r to be added to the message queue.
final booleanpostAtFrontOfQueue(Runnable r)
Posts a message to an object that implements Runnable.
final booleanpostAtTime(Runnable r, Object token, long uptimeMillis)
Causes the Runnable r to be added to the message queue, to be run at a specific time given by uptimeMillis.
final booleanpostAtTime(Runnable r, long uptimeMillis)
Causes the Runnable r to be added to the message queue, to be run at a specific time given by uptimeMillis.
final booleanpostDelayed(Runnable r, long delayMillis)
Causes the Runnable r to be added to the message queue, to be run after the specified amount of time elapses.
final voidremoveCallbacks(Runnable r)
Remove any pending posts of Runnable r that are in the message queue.
final voidremoveCallbacks(Runnable r, Object token)
Remove any pending posts of Runnable r with Object token that are in the message queue.
final voidremoveCallbacksAndMessages(Object token)
Remove any pending posts of callbacks and sent messages whoseobj is token.
final voidremoveMessages(int what)
Remove any pending posts of messages with code 'what' that are in the message queue.
final voidremoveMessages(int what, Object object)
Remove any pending posts of messages with code 'what' and whose obj is 'object' that are in the message queue.
final booleansendEmptyMessage(int what)
Sends a Message containing only the what value.
final booleansendEmptyMessageAtTime(int what, long uptimeMillis)
Sends a Message containing only the what value, to be delivered at a specific time.
final booleansendEmptyMessageDelayed(int what, long delayMillis)
Sends a Message containing only the what value, to be delivered after the specified amount of time elapses.
final booleansendMessage(Message msg)
Pushes a message onto the end of the message queue after all pending messages before the current time.
final booleansendMessageAtFrontOfQueue(Message msg)
Enqueue a message at the front of the message queue, to be processed on the next iteration of the message loop.
booleansendMessageAtTime(Message msg, long uptimeMillis)
Enqueue a message into the message queue after all pending messages before the absolute time (in milliseconds) uptimeMillis.
final booleansendMessageDelayed(Message msg, long delayMillis)
Enqueue a message into the message queue after all pending messages before (current time + delayMillis).
StringtoString()
Returns a string containing a concise, human-readable description of this object.

'Android > Handler & AsyncTask' 카테고리의 다른 글

Handler - android.os.Handler  (0) 2013.01.17
AsyncTask - android.os.AsyncTask  (0) 2013.01.17
Posted by croute

댓글을 달아 주세요