Handler的作用

1.执行计划任务,你可以在预定的实现执行某些任务,可以模拟定时器

2.线程间通信。在Android的通信启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息。当你创建子线程时,你可以在你的子线程中拿到父线程中创建的Handler对象,就可以通过该对象向父线程的消息队列发送消息了。由于Android要求在UI线程中更新界面,因此,可以通过该方法在其他线程中更新界面。


Looper的实现:


当前线程有一个Looper这样的循环在监听消息队列,这是一个死循环,主线程好像可以不用管Looper,其他逻辑代码可以照常往下走,但这个又不是而外的线程,这不是和我们学习的常理相悖么?
Looper由系统控制的循环。在我们的线程没有新开,但是在系统里面vm会有

角色描述:

1.Looper:(相当于隧道)一个线程可以产生一个Looper对象,由他来管理此线程里的MessageQueue

2.Handler:你可以构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里,或者接收从Looper(从MessageQueue取出)所送来的消息

3.MessageQueue:(消息队列)用来存放线程放入的消息

4.线程:UI thread通常就是main thread,而Android启动程序时会替他建立一个MessageQueue

主线程就一个消息队列,不同handler实例之间不能共享消息

HandlerThread子线程的Handler可以使用子线程的消息队列

Handler操作队列,主要是在子线程操作主线程的消息队列,子线程默认是没有消息队列的

Handler是在主线程内的么?
一般是在主线程里面,但是可以控制在当前线程里面发送接受

Handler的post和sendMessage方法,使用的是一个队列还是两个队列?使用的是一个队列

子线程中建立一个handler,然后sendMessage会怎样?
默认的情况下会抛异常,如果在子线程中实例化了looper,可以正常操作

子线程建立handler,构造的时候传入主线程的Looper?
是可以的

更多相关文章

  1. Android(安卓)一个可以自由定制外观、支持拖拽消除的MaterialDes
  2. Android(安卓)Handler 四个使用实例 及HandlerThread的使用
  3. android 进程与线程 相关
  4. Android异步任务处理之Thread线程
  5. 在Android中为啥建议你用Message.obtain()方法获取Message对象,而
  6. android中,由于图像处理不当而引起的OOM问题及其解决方案(一)
  7. 线程对象Android(安卓)开发之多线程处理、Handler 详解
  8. Android签名机制之---签名过程详解
  9. [Java][Android][Process] Process 创建+控制+分析 经验浅谈

随机推荐

  1. android 短信接收
  2. android自动化测试工具---monkeyrunner工
  3. Android NDK学习 Android.mk实例和NDK实
  4. 飞速浏览器3.0.0 webview 练手项目.
  5. android学习笔记17:文字设置
  6. 跑马灯效果实现方式三种
  7. Android studio包冲突错误 IncompatibleC
  8. 在Unity中捕捉Android的常用按钮返回事件
  9. Android开发之EditText
  10. Android(安卓)Service生命周期及用法!