android学习笔记之handler消息处理机制1

在andorid中,一个进程中最少也有一个线程,一般来说,有一个主线程(也就UI线程);以及多个子线程(也叫Worker线程)。
在android中有一个规则:考虑到安全性,子线程不能动态的改变主线程中组件的属性值。
但为了执行一些耗时操作,往往会将它们放在子线程中,执行完毕要更新主线程中的UI,所以就有了handler消息处理机制。
handler就相当于一个中转站,子线程通过sendMessage()等方法,将消息发送给handler对象,handler根据发送的消息对主线程进行相关的处理,从而达到子线程Update主线程的目的。
下面写个Demo:
1.布局,一个TextView和一个Button,实现在子线程中单击Button实现改变TextView的值。如图
android学习笔记之handler消息处理机制1
2.MainActivity中(需要注意的是Handler要导入的包是os)

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final TextView textView= (TextView) findViewById(R.id.text);
        Button button= (Button) findViewById(R.id.button);
        final Handler handler=new Handler(){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                if (msg.what==123){
                    textView.setText("sb");
                }
            }
        };
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        handler.sendEmptyMessage(123);
                    }
                }).start();
            }
        });
    }
android学习笔记之handler消息处理机制1android学习笔记之handler消息处理机制1 织田、信长 发布了28 篇原创文章 · 获赞 15 · 访问量 7790 私信 关注
上一篇:TextView文字左右对齐


下一篇:在textview中高亮显示手机号,并且可点击