您的位置:首页 > 产品设计 > UI/UE

308_子线程操作UI方法

2016-10-12 21:14 246 查看
子线程操作UI方法

阅读郭霖大神博客的读书笔记

博客地址:http://blog.csdn.net/sinyu890807/article/details/9991569

1. Handler的post()方法

    public final boolean post(Runnable r)  

    {  

       return  sendMessageDelayed(getPostMessage(r), 0);  

    }  

也是调用了sendMessageDelayed()方法去发送一条消息

    private final Message getPostMessage(Runnable r) {  

        Message m = Message.obtain();  

        m.callback = r;  

        return m;  

    }  

    private final void handleCallback(Message message) {  

        message.callback.run();  

    }  

因此在子线程中通过Handler的post()方法进行UI操作就可以这么写

        new Thread(new Runnable() {  

            @Override  

            public void run() {  

                handler.post(new Runnable() {  

                    @Override  

                    public void run() {  

                        // 在这里进行UI操作  

                    }  

                });  

            }  

        }).start(); 

2. View的post()方法

    public boolean post(Runnable action) {  

        Handler handler;  

        if (mAttachInfo != null) {  

            handler = mAttachInfo.mHandler;  

        } else {  

            ViewRoot.getRunQueue().post(action);  

            return true;  

        }  

        return handler.post(action);  

    }  

3. Activity的runOnUiThread()方法

    public final void runOnUiThread(Runnable action) {  

        if (Thread.currentThread() != mUiThread) {  

            mHandler.post(action);  

        } else {  

            action.run();  

        }  

    }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: