post () 방법이 어느 라인에서 실행되는지

1785 단어
android에서 자주 사용하는post(new Runnable() {//...}두 가지 있어요.
(1)view의 post 방법은 UI 스레드, 즉 주 스레드에서 실행됩니다.
(2)handler의 방법은handler에 첨부된 라인에서 실행됩니다. 주 라인일 수도 있고 다른 라인일 수도 있습니다.
다음은 Handler의 게시 방법입니다.
/**
     * Causes the Runnable r to be added to the message queue.
     * The runnable will be run on the thread to which this handler is 
     * attached. 
     *  
     * @param r The Runnable that will be executed.
     * 
     * @return Returns true if the Runnable was successfully placed in to the 
     *         message queue.  Returns false on failure, usually because the
     *         looper processing the message queue is exiting.
     */
    public final boolean post(Runnable r)
    {
       return  sendMessageDelayed(getPostMessage(r), 0);
    }

이것은 View 내 post 방법입니다.
[/**
     * <p>Causes the Runnable to be added to the message queue.
     * The runnable will be run on the user interface thread.</p>
     *
     * @param action The Runnable that will be executed.
     *
     * @return Returns true if the Runnable was successfully placed in to the
     *         message queue.  Returns false on failure, usually because the
     *         looper processing the message queue is exiting.
     *
     * @see #postDelayed
     * @see #removeCallbacks
     */
    public boolean post(Runnable action) {
        final AttachInfo attachInfo = mAttachInfo;
        if (attachInfo != null) {
            return attachInfo.mHandler.post(action);
        }
        // Assume that post will succeed later
        ViewRootImpl.getRunQueue().post(action);
        return true;
    }

따라서 Post 방법이handler의 경우 Runnable는handler에 의존하는 라인에서 실행됩니다.
View의 post 방법이라면 주 라인에서 실행될 것입니다.

좋은 웹페이지 즐겨찾기