-
handler、messagequeue、looper查看全部
-
mark查看全部
-
能不能不用Handler查看全部
-
Handler查看全部
-
最终截图查看全部
-
Handler--查看全部
-
Handler-1查看全部
-
Handler0查看全部
-
什么是Handler查看全部
-
need watch again!查看全部
-
每个线程都对应一个looper,在线程里面创建的handler默认都会与这个looper对应 * 一个线程可以有多个handler与唯一的一个looper对应,但有且只有一个looper * 主线程中创建的handler默认会有一个系统自动创建的looper与之对应,子线程中的handler会默认与该线程中手动创建的Looper对应(可以更改,下节课程)自动关联 * 而我们自己在子线程中创建handler对象的时候系统不会自动为我们创建,我们需要自己创建该线程相关的looper(Looper.prepare();)并且手动Looper.loop()轮询它的MessageQueue(死循环)查看全部
-
google为什么设计只能通过handler机制来更新ui的?最根本的目的就是解决多线程并发问题。 假设如果在一个Activity当中,有多个线程去更新ui,并且都没有加锁机制,那么就会出现更新界面错乱;但是如果都进行加锁处理的话,又会导致性能下降因此,产生了这种handler的更新机制,根本不用去关心多线程的问题,所有的更新ui的操作,都是在主线程的消息队列当中去轮询处理 Looper:(1)Looper作为一个消息封装的载体,包含了一个消息队列messageQueue,所有的Handler发送的消息都经过这个消息队列——要发送的消息会往这个消息队列中插入或移除。 (2)Looper.loop()方法是一个死循环,不断轮询messageQueue,如果有消息存在取出并发送给handler,然后handler处理消息,没有就阻塞 Handler:内部会和Looper进行关联,也就是说在Handler内部可以找到Looper,找到了Looper也就找到了MessageQueue。调用handler.sendMessage()就是向消息队列中发送消息;然后Looper轮询MessageQueue,将message发送给Handler本身进行处理。 MessageQueue:一个消息队列,可以添加消息,并处理消息 总结:handler负责发送消息,Looper负责接收Hnandler发送的消息,并直接把消息回传给hanlder自己。MessageQueue是一个存储消息的容器。查看全部
-
handler和looper的关系: 总结:handler负责发送消息,looper负责接收handler发送的消息,并直接把消息回传给handler自己 MessageQueue就是一个存储消息的容器。查看全部
-
android为什么设计handler机制更行UI?查看全部
-
不用handler可以吗? 不行。 Android在设计的时候就封装了一套消息创建、传递、处理机制,如果不遵循这样的机制就没有办法更新UI信息,会抛出异常信息。查看全部
举报
0/150
提交
取消