Handler机制

来源:互联网 发布:刻录机软件 编辑:程序博客网 时间:2024/06/08 09:36

Handler机制

每个android应用在启动时都会开启一个线程,该线程称为UI线程。正常情况下,所有操作都运行在该线程中。但为了UI更新的流畅,通常将耗时操作放置于其它线程中运行。但android要求所有涉及到UI的操作必须在UI线程中执行。于是在其它线程耗时操作完成时如果需要更新UI,就需要使用线程异步通信,即本文提到的Handler机制。

基本使用

      final Handler myHandler = new Handler(){            @Override            public void handleMessage(Message msg) {                super.handleMessage(msg);                Log.e("ZXX", msg.arg1 + "");                Log.e("ZXX", msg.arg2 + "");                Log.e("ZXX", (String)msg.obj);                //利用message中的值 更新UI            }        };        new Thread(new Runnable() {            @Override            public void run() {                //耗时操作                Message message = myHandler.obtainMessage();                message.arg1 = 1;                message.arg2 = 2;                message.obj = "abc";                myHandler.sendMessage(message);            }        }).start();

handler的基本操作很简单,但其机制还是需要了解一下的。

先是基本概念,一个线程会关联一个消息队列,消息队列要有一个Looper对象来不断的循环取消息,并分给对应的Handler处理。Handler除了负责处理消息外还负责发送消息,并且在发送时将自身设置进Message 消息的target中,当Looper取出消息时便可以根据这个target将消息分发给对应的handler处理。

这里写图片描述

原创粉丝点击