网站大量收购独家精品文档,联系QQ:2885784924

java训导教法-关于handler的详解.docx

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java训导教法-关于handler的详解

Handler在Android的学习当中应用是非常多的,我们就依次的来解决handler相关问题。其实在handler当中有很多问题比较难理解,比如我们在子线程中通过post的方法发送一条消息,然后就立即能够在handlemessage方法中接受到这条消息,在最初我们学习中都会比较困惑,那么今天我们通过handler的详细讲解,让大家了解handler的机制是什么,并且结合源码和大量的实例让大家更深的了解handler,通过今天的学习,相信大家对handler会有一定的掌握,handler对我们日后android的开发或者面试中都是非常重要的存在。1. Handler是什么?在我们学习一门技术和语言之前,一定要先了解以下这门技术和语言是什么,不要盲目的去学习,因为技术太多了,我们要把经历放在核心的技术当中。Handler在我们android开发当中是一个非常重要的机制,那handler又是什么呢?handler是android提供用于更新ui的一套机制,也是消息处理的机制。handler的主要作用有两个:(1):在新启动的线程中发送信息。(2):在主线程中获取,处理信息。2. 为什么要是用handler?如果我们不用handler去发送消息,更新ui可以么?是不行的。 Android在设计的时候,就封装了一套消息创建,传递,处理机制,如果不遵循这样的机制,就没有办法更新ui信息的,就会抛出异常信息。异常的描述:不能在非ui线程中去更新ui。Only the original thread that created a view hierarchy can touch its views.3.Handler怎么用呢?想要了解handler怎么用,就需要去看一下api文档。一个handler允许你发送和处理message和Runnable对象在相关联的MessageQueen。每个handler实例都与一个单独的线程绑定,该线程带有消息队列MessageQueen。当你创建一个新的handler时,它默认会绑定到创建线程的MessageQueen中,从这一点上,它将传递消息和runnable对象,在MessageQueen中执行这个消息。Handler有两个主要用途:1.合理调度安排消息和runnable对象,使它们在将来的某个点被执行。2.将一个动作入队安排在非当前线程执行。调度消息是通过一系列的post方法和sendMessage方法。post方法允许你向消息队列中入队一些Runnable对象,在它们被接收到的时候会被调用. sendMessage方法允许你入队一个消息对象(Message),包含一个bundle数据,之后将会被Handler的handleMessage(Message)方法所处理。当为应用程序创建一个进程时,它的主线程专门负责运行一个消息队列,它负责管理顶级应用程序对象(活动、广播接收器等),以及它们所创建的任何窗口。您可以创建自己的线程,并通过一个处理程序与主应用程序线程进行通信。这是通过之前调用的post或SendMessage方法从新的线程。给定的runnable对象或消息将被安排在处理程序的消息队列,在适当时候进行处理。实例一:handler的post基本用法publicclassMainActivityextendsActivity {private TextView tv;private Handler handler = new Handler();@Overrideprotectedvoid onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView)findViewById(R.id.tv);new Thread(){publicvoid run() {try { Thread.sleep(2000); handler.post(new Runnable() {@Overridepublicvoid run() { tv.setText(123456789); } }); } catch (InterruptedException e) { e.printStackTrace();

文档评论(0)

my18 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档