更新UI的四种方式

更新UI使我们实战开发中一个不可缺少的环节。今天,我就来简单的总结了下android中常用的四种更新UI的方式。(注意:非UI线程一般情况下是不能去更新UI的)。

在这就直接上代码了,一些必要的注释代码中已经有了。不需要再在这里啰嗦了。

/**
 * 四种更新UI的方式
 */
public class HanlerActivity extends Activity {

    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case 1:
                    //执行更新代码
                    break;
                default:
                    break;
            }
            super.handleMessage(msg);
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hanler);
        new Thread(){
            public void run(){
                //模仿耗时事件
                try{
                    Thread.sleep(5000);
                    //更新UI
                    handler1();//第一种方式更新,通过post
                    handler2();//第二种方式更新,通过sendMessage
                    handler3();//第三种方式更新,通过runOnUiThread
                    handler4();//第四种方式更新,通过view自身的post
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }.start();
    }

    /**
     * view自身的机制,具体可以跟踪源码
     */
    private void handler4() {
        final TextView textView = new TextView(this);
        textView.post(new Runnable() {
            @Override
            public void run() {
                //更新
                textView.setText("ok");
            }
        });
    }

    /**
     * 实质是调用 handler.post
     */
    private void handler3() {
        this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                //UI更新代码
            }
        });
    }

    /**
     * 使用handler.post实质是 sendMessage 跟踪源码你可以发现
     */
    public void handler1(){

        handler.post(new Runnable() {
            @Override
            public void run() {
                //更新UI代码
            }
        });
    }

    /**
     * 专门有一章节详细简介
     */
    public void handler2(){
        handler.sendEmptyMessage(0);
    }

}

关于 Handler机制 以及 Message ,looper  ,Hanler 的关系。将在下篇blog有详细的解释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值