android.os.handler

转载 2013年12月04日 11:31:46

android.os.handler相关知识整理

Handler在android里负责发送和处理消息。它的主要用途有:

  1)按计划发送消息或执行某个Runnanble(使用POST方法);
  2)从其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新UI线程)/用来向不属于自己的线程的队列中加入某个动作

Handler中分发消息的一些方法
      post(Runnable)
      postAtTime(Runnable,long)
      postDelayed(Runnable long)
      sendEmptyMessage(int)
      sendMessage(Message)
      sendMessageAtTime(Message,long)
      sendMessageDelayed(Message,long)

      
以上post类方法允许你排列一个Runnable对象到主线程队列中,
      sendMessage
类方法,允许你安排一个带数据的Message对象到队列中,等待更新.

   默认情况下,Handler接受的是当前线程下的消息循环实例(使用Handler(Looper looper)、Handler(Looper looper, Handler.Callback callback)可以指定线程),同时一个消息队列可以被当前线程中的多个对象进行分发、处理(在UI线程中,系统已经有一个Activity来处理了,你可以再起若干个Handler来处理)。在实例化Handler的时候,Looper可以是任意线程的,只要有Handler的指针,任何线程也都可以sendMessage。Handler对于Message的处理不是并发的。一个Looper 只有处理完一条Message才会读取下一条,所以消息的处理是阻塞形式的(handleMessage()方法里不应该有耗时操作,可以将耗时操作放在其他线程执行,操作完后发送Message(通过sendMessges方法),然后由handleMessage()更新UI)。

      当应用程序启动时,Android首先会开启一个主线程(也就是UI线程),主线程为管理界面中的UI控件,进行事件分发,比如说,你要是点击一个Button,Android会分发事件到Button上,来响应你的操作。  如果此时需要一个耗时的操作,例如:联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,,如果你放在主线程中的话,界面会出现假死现象,如果5秒钟还没有完成的话,会收到Android系统的一个错误提示  "强制关闭", 这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,Android主线程是线程不安全的,也就是说,更新UI只能在主线程中更新,子线程中操作是危险的.这个时候,由于Handler运行在主线程中(UI线程中),  它与子线程可以通过Message对象来传递数据,这个时候,Handler就承担着接受子线程传过来的Message对象(里面包含数据)  ,把这些消息放入主线程队列中,配合主线程进行更新UI

相关文章推荐

android.os.handler

android.os.handler相关知识整理 Handler在android里负责发送和处理消息。它的主要用途有:   1)按计划发送消息或执行某个Runnanble(使用POST方法...

初识android.os.Handler

今天学习了android.os.Handler 这个类,为了加强记忆,做下总结~ 整体理解是话,可以把Handler理解为线程队列的管理者,队列里的线程将会被系统逐个取出运行,我们可以用Ha...

android.os.handler相关知识整理

android.os.handler相关知识整理 Handler在Android里负责发送和处理消息。它的主要用途有:  1)按计划发送消息或执行某个Runnanble(使用POST方法);   ...

This Handler class should be static or leaks may occur (anonymous android.os.Handler)

如果在 Activity 中使用了非静态的匿名 Handler 类,lint 会提示 This Handler class should be static or leaks may occur (a...

安卓倒计时(android.os.Handler.Handler()

安卓倒计时(android.os.Handler.Handler())

模拟Android Handler机制Demo

  • 2017年08月06日 00:29
  • 21.7MB
  • 下载

android handler

  • 2012年07月22日 23:08
  • 4KB
  • 下载

Android多线程消息处理机制(三) Handler部分源码分析

此文一起来看下Handler的部分源码,不用怕很简单,有英文的地方我都翻译了。 把里面相关的方法过一眼,你瞬间会明白很多。高手就不用看了,去过你的荣华富贵花天酒地。 我一致认为,想学好某一技术,首先是...

Android的Handler使用方法总结

  • 2013年08月15日 00:21
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android.os.handler
举报原因:
原因补充:

(最多只允许输入30个字)