Handler的post()和handleMessage()方法的疑惑 为了不让帖子沉下去,Up by myself... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那就是说post的线程和send的消息都是发送到一个队列里的喽?也就是post方法调用后在handleMessage方法也会被执行的? 刚刚看了一下源码,发现post和sendMessage其实都是发送到一个消息队列里去的,因为都是调用的sendMessageDelay方法,只不过post调用sendMessageDelay方法的时候传的参数为getPostMessage(r)而已。而且在第一次调用post方法后的确执行了handleMessage方法,但是却没有执行run方法,如果在handleMessage方法中再调用post方法后能执行一次run方法,但是好像post却没有再往消息队列中发送消息,因为后面就不再执行handleMessage方法了,也就不会一直这样反复下去了……为什么呢? 我也想知道。。 而且我还想知道handleMessage的调用规则。。 是在有sendMessage之类的方法被调用后Handler就会自动调用handleMessage吗? 那如果我在handleMessage中调用sendMessage方法是不是就成为一个递归了? handleMessage()里面调用sendMessage()应该会报错吧,有没有试过? 1. 一个Handler只有一个队列;2. 在调用Handler.post(Runnable runnable)方法时,会将runnable封装成一个Message;3. 在队列执行时,会判断当前的Message里是否封装了Runnable,如果封闭了,就直接执行Runnable,如果没有,将当前的Message传递给handleMessage(Message msg)处理;4. Handler在实例化的时候可以设置一个callback<Handler.Callback>,callback也有一个handleMessage(Message msg)方法,如果步骤3中的Handler有callback,那么调用的是callback的handleMessage(Message msg),否则调用自身的handleMessage(Message msg)。 也就是说,想产生递归效果,是要在Runnable里post(Runnable runnable),或者在handleMessage()里sendMessage(),交错调用就会断片。 从一个Activity跳转到ListActivity SlidingDrawer的使用 求数据解析 请问关于intent android中使用下面这种方式切换语言后为什么要重启才生效? Android传感器API之:磁场Magnetic Field源码与示例 android在thread里面构造socket需要死循环 ?? 关于SQLite 的DAO层设计问题 ,求大神指点下! 如何把ArrayList放到button的单击事件里面 objectanimation 动画移动后,如何回到原来位置 xmpp 消息问题 请高手解决 android中ListView能不能实现抬起事件,只有点击无抬起
2. 在调用Handler.post(Runnable runnable)方法时,会将runnable封装成一个Message;
3. 在队列执行时,会判断当前的Message里是否封装了Runnable,如果封闭了,就直接执行Runnable,如果没有,将当前的Message传递给handleMessage(Message msg)处理;
4. Handler在实例化的时候可以设置一个callback<Handler.Callback>,callback也有一个handleMessage(Message msg)方法,如果步骤3中的Handler有callback,那么调用的是callback的handleMessage(Message msg),否则调用自身的handleMessage(Message msg)。