首先说一下handler 吧,具体的讲法,一切和屏幕相关的都是handler处理的;
以我的看法吧, 它相当于一个主线程,我们都知道,在子线程中是不能更改UI的,比如说你想要在一个子线程中去更改UI
这时候就你可以创建一个handler对象通过传达消息的方法在handler中去修改子线程当中的UI了;
##Handler的创建##
那么我们如何去创建一个handler呢? 其实很简单,就像对象一样new 出来就行了
Handler handler=new Handler(){
//在这里需要注意的是你导的包可不能导错了;通常我们导的都是android:os这个包
//在这里面我们需要重写一个handlerMessage();重写这个方法有什么用呢? 我们说在子线程发送消息到handler中
//主要是通过下面重写的这个方法来接受消息的;这样子接收到 消息才能更改子线程里面的内容的;msg就是接收的消息;
Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); } };
上面这样子就可以实现Handler的通信了;
###android中的两条规定:
1.子线程不允许使用网络
2.就是子线程不允许修改UI;
##Looper 循环者
Looper线程
是一个无限循环的线程,调用looper.prepare()方法将一个普通线程提升到一个循环者,提升到循环者后,会添加一个MessageQueue的消息队列,在调用looper.loop()方法,无限循环来MessageQueue取消息,转发消息的Handler来处理;
其实Handler是一个灵活的线程环境;用Handler来发送消息呢,就要绑定一个Looper中的MessageQueue,不管
哪条线程发送消息,总是发送到他绑定的消息队列中,循环则将消息取出来,再送给发消息的Handler处理,这时候已经
完成了线程通信了;
面试:
1.view的是事件分发;
2.Android线程通信;
在下乃一枚新生,有什么写的不好的地方,还望各位指点指点,,
本文深入讲解了Android开发中Handler的工作原理及其应用场景,并介绍了Looper的作用及如何配合Handler完成线程间通信。

2220

被折叠的 条评论
为什么被折叠?



