一直对Handler有所疑惑,今天做出决心要搞懂,现在粗略讲讲心得。

Handler拥有两个队列,一个是放线程的队列,我们就暂且叫做线程队列;而另外一个是放消息的队列,我们暂且叫做消息队列。

创建线程的方法在Java当中有两种,一种是继承Thread而另外的一种则是实现Runnable。在Android中我们比较常用的是实现Runnable,然后可以通过Handler的post方法或者是postDelayd方法把线程添加到线程队列当中。当需要停止的时候的是调用Handler的removeCallBacks方法。

说道消息队列,我们通过在Runnable中Handler的obtainMessage获得Message对象,然后通过Handler的sendMessage方法把消息压入到消息队列当中,最后通过复写Handler里面的HandlerMessage方法取得message来进行相应的处理。 以下就是大概的流程:


handler.post(runnable);
Handlerhandler= newHandler(){
public voidhandlerMessage(Messagemsg){
handler.post(runnable);
}
}
Runnablerunnable= newRunnable(){
public voidrun(){
Messagemessage=handler.obtainMessage();
handler.sendMessage(message);
}
}

更多相关文章

  1. 详解Android冷启动实现APP秒开的方法
  2. Android(安卓)开发环境搭建 与在编译中遇到错误make Error 45解
  3. Android(安卓)源码开发调试方法
  4. Android(安卓)跳转权限设置界面的终极适配(适配各大定制 ROM)
  5. 【eoe教程】Android中自定义视图的绘制方法
  6. Android的消息处理机制—Looper,Handler,Message
  7. Android录音mp3格式实例详解
  8. java-Service生命周期及用法! - 随心
  9. 2020.9.8 oppo Java开发(Android)一面面经

随机推荐

  1. 使用.after()添加html关闭和打开标记
  2. android 中 webview 怎么用 localStorage
  3. javaScript怎么实现双向数据绑定
  4. Dart语言和Android:访问手机的相机
  5. 如何使用Array.filter而不是传统的循环-O
  6. 如何在javascript函数中将URL编码为参数?
  7. 如何使用Angular.js从json文件中使用id获
  8. 在批处理文件中使用JSMin
  9. 前端笔记之JavaScript(十)深入JavaScript节
  10. Dojo:不能在AccordionContainer.js中读取