201709013工作日记--Android消息机制HandlerThread

Posted buder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了201709013工作日记--Android消息机制HandlerThread相关的知识,希望对你有一定的参考价值。

1.首先来看一个常规的handler用法:

在主线程中建立一个handler:

private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 0:
                    mTestTV.setText("This is handleMessage");//更新UI
                    break;
            }
        }
    };

 

在子线程中进行耗时操作,结束后发送消息,主线程收到消息后进行更新UI操作。

new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(1000);//在子线程有一段耗时操作,比如请求网络
                    mHandler.sendEmptyMessage(0);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();

 

2.现在来看看handler.post()的版本:

private Handler mHandler;//全局变量
@Override
protected void onCreate(Bundle savedInstanceState) {
    mHandler = new Handler();
    new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(1000);//在子线程有一段耗时操作,比如请求网络
                        mHandler.post(new Runnable() {
                            @Override
                            public void run() {
                                mTestTV.setText("This is post");//更新UI
                            }
                        });
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }).start();

 

耗时操作完成之后,直接在handler开启的子线程中进行了更新UI的操作。post和sendMessage原理都是封装成Message,并且最终都调用了enqueueMessage()一个无限循环将消息加入到消息队列中(链表的形式)。翻看MessageQueue的方法,我们找到了next(),代码太长,不赘述,我们知道它是用来把消息取出来的就行了。不过这个方法是在什么地方调用的呢,不是在Handler中,我们找到了Looper这个关键人物,我叫他环形使者,专门负责从消息队列中拿消息。参考博客:http://blog.csdn.net/ly502541243/article/details/52062179/

 

以上是关于201709013工作日记--Android消息机制HandlerThread的主要内容,如果未能解决你的问题,请参考以下文章

android 车机电话的通讯录联系人搜索实现解析 ------- 填坑日记

android 车机电话的通讯录联系人搜索实现解析 ------- 填坑日记

上位机学习日记系统运行日志功能的编写与日志查看功能

红米Note5官方刷机日记 - 小米助手Recovery刷机

红米Note5官方刷机日记 - 小米助手Recovery刷机

kali折腾日记之实体机安装(win10与kali双系统)