Android中消息机制初探(创建一个可以接收消息的子线程)

来源:互联网 发布:粑粑是什么网络意思 编辑:程序博客网 时间:2024/04/18 23:30

Android开发者都应该知道的是为了提高用户体验,必须将耗时的操作放在子线程中处理,处理完毕之后发送消息给主线程,刷新UI界面。
那么子线程如何接收消息呢?
这里使用到Looper对象

    /**     * 需要用到调用消息队列的方法     * prepare();    为线程初始化消息队列     * myLooper();   获取loop对象的引用     * loop();       Looper.loop()调用是让线程消息队列开始运行,可以接受消息     * quit();       退出消息队列,若线程没有其他操作也会随着消息队列的退出而退出     */```loop的API少且简单。现在开始来创建一个用于处理耗时作业的子线程<div class="se-preview-section-delimiter"></div>

这里写代码片
“`

public class SonThread  extends Thread{    private static final String threadTag="WORKING_THREAD";    private Handler sonThreadHandler;    private Looper sonThreadLooper;    @Override    public void run() {        super.run();        Looper.prepare();        sonThreadLooper = Looper.myLooper();        sonThreadHandler = new Handler(sonThreadLooper){            @Override            public void handleMessage(Message msg) {                super.handleMessage(msg);                if (msg.what==1){                    Log.e("主线程的消息===>", (String) msg.obj);                }            }        };        Looper.loop();    }    //主线程给子线程发送消息    public void sendToSonThread(String message){        if (sonThreadHandler!=null){            Message msg = Message.obtain();            msg.what=1;            msg.obj = message;            sonThreadHandler.sendMessage(msg);        }    }    public void exit(){        //关闭线程        if (sonThreadLooper!=null){            sonThreadLooper.quit();        }    }}
代码通俗易懂,在子线程中创建消息循环,且创建一个用于操作消息队列中消息的Handler对象。既从消息队列取消息,也用于主线程主动向子线程发送消息。来看看主线程如何发送消息        son.sendToSonThread("享受技术,享受生活!");
0 0