一. Handler与Thread的区别。

Handler与调用者处于同一线程,如果Handler里面做耗时的动作,调用者线程会阻塞。Android UI操作不是线程安全的,并且这些操作必须在UI线程中执行。Android提供了几种基本的可以在其他线程中处理UI操作的方案,包括Activity的runOnUiThread(Runnable),View的post以及1.5版本的工具类AsyncTask等方案都采用了Handler,Handler的post对线程的处理也不是真正start一个新的线程,而是直接调用了线程的run方法,这正是google煞费苦心搞一套Handler的用意。

二. Handler对于Message的处理不是并发的。

一个Looper 只有处理完一条Message才会读取下一条,所以消息的处理是阻塞形式的。但是如果用不同的Looper则能达到并发的目的。Service中,onStart的执行也是阻塞的。如果一个startService在onStart执行完成之前,再次条用startService也会阻塞。如果希望能尽快的执行onStart则可以在onStart中使用handler,因为Message的send是非阻塞的。如果要是不同消息的处理也是并发的,则可以用不同的Looper实例化Handler。

三. 资源回收

向Handler对象发送类似new Message ()形式的空Message可以达到清空Message的目的,这种做法与getLooper().quit()的做法是一样的。如果利用的资源较多,应及时清理。

四.消息队列的先进先出原则。

五.向哪个Handler 发送消息,就必须在哪个handler 里面接收;

最新文章

  1. Android模拟器Genymotion如何访问本地服务器?
  2. eclipse与myeclipse恢复已删除的文件和代码
  3. 转:C# DataGridView控件清空数据出错解决方法
  4. PHP中最容易忘记的一些知识点总结
  5. hotfix分析
  6. FLASH 存储学习-串行SPI NOR FLASH
  7. Linux入门基础教程
  8. 编程算法 - 字典分词 代码(C)
  9. IP 网际协议
  10. 文件I/O实现cp复制功能
  11. Python实战之列表简单练习
  12. 执行查询“BACKUP LOG [XXX] TO DISK = N'F:\\BackData\\事务日至备份\\...”失败,错误如下:“无法执行 BACKUP LOG,因为当前没有数据库备份。 BACKUP LOG 正在异常终止。
  13. 一、Log4Net配置
  14. 爬虫 requests 模块
  15. 将pucharm与anaconda配合使用
  16. 【Python】正则表达式简单教程
  17. Jarvis OJ [XMAN]level1 write up
  18. Linux——vi的使用
  19. Ubuntu 14.04 正式版 12.4
  20. 初次接触Dynamics 365

热门文章

  1. 多容器共享volume
  2. 关于JPype报FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/jvm'错误的解决
  3. windows BAT脚本2个服务器间传递文件
  4. vue-element-admin实现模板打印
  5. C#实现异步阻塞TCP(SocketAsyncEventArgs,SendAsync,ReceiveAsync,AcceptAsync,ConnectAsync)
  6. 前端自动化构建工具 Webpack—— 2 webpack最基本的使用方式
  7. 自己写的一个用于往文件中插入字符串及空格的bat
  8. BZOJ 3065 带插入区间K小值 (替罪羊树套线段树)
  9. Gson/Jackson/FastJson工具类
  10. 题解 [CF916E] Jamie and Tree