位置: 编程技术 - 正文

android之handler

编辑:rootadmin

推荐整理分享android之handler,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

android中handler的基本使用方法以及运行原理。

最近看mars的android重置版第二季的视频关于handler的讲解,让我对于这个以前知道怎么用,却不是很明白原理的组件的理解瞬间加深了无数倍。mars真的讲的很好,视频真的都蛮不错的。下面我写写自己学习到的知识,以及自己的了解。

handler的基本运行原理handler怎样从worker thread传输数据到main threadhandler怎样从main thread传输数据到worker threadhandler的post()方法handler的基本运行原理

为什么我们需要一个handler?我想这是一个最重要的问题,也就是说handler的作用到底是什么?handler主要是用于线程间的通信,那么问题又来了,为什么一个app中需要多个线程,而不是只有一个UI主线程就可以了呢?

假如app中只有一个UI主线程,那么,当需要进行网络连接,网络下载这些等待耗时较长的任务时,android系统就会检测到UI主线程长时间没有响应,就会发出一个 application not response的异常警告,简称ANR问题。所以,在UI主线程中,是要与用户实时交互的,不能出现长时间的等待问题。于是,这些任务必须在worker thread中进行。

然而根据android的设定,UI主线程之外的线程,(除了特别的控件,例如progressbar)不能修改UI里的控件的,这样又出现了新的问题,我们在子线程获得的数据,该如何反应的UI上与用户进行交互?这样,就出现了这个巧妙的组件,handler!

android之handler

那么,handler到底是如何运行的呢?handler对象首先取出一个消息对象,存入到一个消息队列messagequeue中,然后在另外一端,有一个looper对象,循环的从消息队列中取出消息对象再交给handler去处理。

handler怎样从worker thread传输数据到main thread

通过这个例子,我们可以看到,handlerMessage()方法是运行在主线程中的,而他可以得到来自worker thread的消息,这样,就可以将消息在UI界面更新了。

为什么只是初始化了一个handler对象,就会自动调用他的handleMessage方法?是因为在android.os.Handler类中有一个looper对象,会循环的从消息队列中取出消息,调用handleM而是撒个方法。

handler怎样从main thread传输数据到worker thread

通过运行结果可以知道,handleMessage()方法运行在worker thread中,这样就可以在worker thread中处理来自主线程的消息,实现了进程间的通信。

handler的post()方法

post方法通过生成一个message,然后把Runnable对象放在message中,再把message放在消息队列中,然后在主线程中取出这个Runnable对象,在主线程中执行。

最后的结果,是这个Runnable对象执行在main线程中。有了post()方法,我们可以直接在worker thread中先生成一个Runnable对象,然后在其中写上更新UI的代码,直接用post方法即可更新UI。

使用lint工具优化Android代码 一、概述Androidlint工具是一个静态的代码分析工具,用来检查代码中潜在的问题并且提高代码的正确性,安全性,可用性,国际化和性能。确保代码中没

点击界面产生气泡,气泡效果~ packagecom.ray.bubble;importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.drawable.AnimationDrawable;importandroid.os.Bundle;importandroid.view.MotionEvent;importandroid.vi

Android中的回调机制 从学习Android到现在,有意无意都会听到一个叫做回调机制的这么一个东东。例如Activity的生命周期函数就是通过回调机制来实现的,还有为控件添加监

标签: android之handler

本文链接地址:https://www.jiuchutong.com/biancheng/379700.html 转载请保留说明!

上一篇:Android 重写Seekbar(android重写方法)

下一篇:使用lint工具优化Android代码(lint 工具)

  • 房地产零税率
  • 财税通财务软件如何调整凭证间距
  • 报销为什么不能多家赔付
  • 发行股票支付给承销商的发行费用计入
  • 跨年增值税专用发票没有认证,需要开红字信息表吗
  • 工程结算是含税还是不含税
  • 展会补贴收入会计处理
  • 进项税抵扣
  • 企业进口关税和消费关税
  • 小企业工资薪酬制度
  • 应纳税调增调减会计分录
  • 利息收入的纳税调整
  • 增值税普通发票和专用发票有什么区别
  • 其他应收款怎么分析
  • 小规模纳税人增值税超过30万怎么纳税
  • 进口有退税吗最新政策
  • 收到投资款会计科目怎么做账
  • 法人变更后的涉税问题
  • 税务没有核定印花税
  • 王者荣耀如何充值退款
  • 怎么注销win10系统
  • 电脑店u盘装系统步骤
  • php -m
  • win10更新错误0x8000402
  • linux限制用户访问文件
  • 损益期末余额怎么算
  • 八个与cpu相关的字符
  • 企业年金基金缴费必须归集到受托财产托管账户
  • 不良资产核销的条件 追偿180天
  • php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
  • 自行建造厂房如何缴税
  • echars legend
  • 应收账款结账损失怎么算
  • 打印空白表格怎么制作
  • 未取得合法支付凭据和与本单位无关的收入
  • 小企业会计准则和一般企业会计准则的区别
  • java自增自减运算符的规则
  • 股票分红个人所得税
  • 在linux服务器中新增加一块硬盘
  • 核定征收企业注册
  • 固定资产原值和净值的区别
  • 增值税发票认证期限最新规定
  • 房产税从租和从价都要交吗
  • mysql显示数据库中的表
  • 将自产产品用于赠送
  • android 矩阵运算
  • 递延收益分摊是当月还是次月
  • 应收账款未计提坏账能直接核销
  • 银行备付金账户是什么帐户
  • 永利股权投资基金怎么样
  • 用人单位劳务派遣人员工资怎么做账
  • 无形资产摊销方法应反映其经济利益的预期实现方式
  • 个人公积金计入什么科目
  • 工程类企业存货包括哪些
  • 企业建账前应考虑什么
  • mysql导出语句
  • 过程要求可包括哪些内容
  • ubuntu20.04挂载
  • win10快速操作怎么调出来
  • win7更改电脑设置在哪里
  • Win10 Mobile 10572 预览版已修复和已知问题汇总
  • ubuntu系统中文名字
  • rsync服务端配置
  • win7系统桌面图标变大了怎样恢复
  • w7定时自动关机
  • win10更新后电脑黑屏
  • android开发一般用什么软件
  • perl时间函数
  • 如何让卖家给你乖乖退款
  • opengl教程48讲
  • Node.js中的核心模块包括哪些内容?
  • 读取fasta文件
  • python生成器有几种写法
  • bat 远程连接
  • unity每秒执行一次
  • ubuntu服务器配置代理访问外网
  • javascript基础编程
  • android电池优化设置
  • 酒类包装物押金的消费税处理规定
  • 增值税申报表如何导出
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设