位置: 编程技术 - 正文

Android:UI线程与子线程(android ui线程和主线程的区别)

编辑:rootadmin

推荐整理分享Android:UI线程与子线程(android ui线程和主线程的区别),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android ui线程和主线程的区别,android线程与线程通信,简述android线程及handler的关系,android的线程,android ui线程和主线程的区别,android的线程,android线程与线程通信,android的线程,内容如对您有帮助,希望把文章链接给更多的朋友!

在一个Android 程序开始运行的时候,会单独启动一个Process。默认的情况下,所有这个程序中的Activity或者Service(Service和 Activity只是Android提供的Components中的两种,除此之外还有Content Provider和Broadcast Receiver)都会跑在这个Process。

一个Android 程序默认情况下也只有一个Process,但一个Process下却可以有许多个Thread。

在这么多Thread当中,有一个Thread,我们称之为UI Thread。UI Thread在Android程序运行的时候就被创建,是一个Process当中的主线程Main Thread,主要是负责控制UI界面的显示、更新和控件交互。在Android程序创建之初,一个Process呈现的是单线程模型,所有的任务都在一 个线程中运行。因此,我们认为,UI Thread所执行的每一个函数,所花费的时间都应该是越短越好。而其他比较费时的工作(访问网络,下载数据,查询数据库等),都应该交由子线程去执行, 以免阻塞主线程。

那么,UI Thread如何和其他Thread一起工作呢?常用方法是:

诞生一个主线程的Handler物件,当做Listener去让子线程能将讯息Push到主线程的Message Quene里,以便触发主线程的handlerMessage()函数,让主线程知道子线程的状态,并在主线程更新UI。

例如,在子线程的状态发生变化时,我们需要更新UI。如果在子线程中直接更新UI,通常会抛出下面的异常:

Android:UI线程与子线程(android ui线程和主线程的区别)

ERROR/JavaBinder():android.view.ViewRoot$CalledFromWrongThreadException:Only the original thread that created a view hierarchy can touch its views.

意思是,无法在子线程中更新UI。为此,我们需要通过Handler物件,通知主线程Ui Thread来更新界面。

如下,首先创建一个Handler,来监听Message的事件:

或者

当子线程的状态发生变化,则在子线程中发出Message,通知更新UI。

mHandler.sendEmptyMessageDelayed(UPDATE_UI, 0);

在我们的程序中,很多Callback方法有时候并不是运行在主线程当中的,所以如果在Callback方法中更新UI失败,也可以采用上面的方法。

Android RecyclerView 动画展开item显示详情 stackoverflow上看到这个问题,答主给了个

Android动画效果translate、scale、alpha、rotate详解(基础篇) 动画类型Android的animation由四种类型组成XML中alpha渐变透明度动画效果scale渐变尺寸伸缩动画效果translate画面转换位置移动动画效果rotate画面转移旋转动画

android 制作天气预报软件 天气预报软件是android中常见的工具软件最近我也做了一个感觉还是挺有趣的,随便发现很多android基础技术看看效果图:天气预报主要使用的开放接口这

标签: android ui线程和主线程的区别

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

上一篇:把android 中图片局部区域改为透明(android的图片应该放到哪一个目录下面?)

下一篇:Android RecyclerView 动画展开item显示详情(android recyclerview 拖拽加阴影)

  • 财税通财务软件如何调整凭证间距
  • 社保未统一征收
  • 农产品开具发票税率是多少
  • 企业所得税多缴退税规定
  • 办公室水电费计算公式
  • 多缴税款抵税有期限吗
  • 事业单位合并财务交接
  • 担保费能抵扣吗
  • 公司清算 债权
  • 交易性金融资产是什么意思
  • 小规模纳税人购车可以抵扣多少税
  • 预付账款是
  • 材料采购发生的合理损耗计入
  • 企业购买原材料,货款未支付
  • 股权转让时其他股东不配合怎么转让
  • 税目与应纳税额的关系
  • 企业以前年度的关联交易与预约定价安排
  • 无法读取金税盘时间版本怎么解决
  • 增值税进项税额是什么意思
  • 工程款发票备注栏必须填写吗
  • 一般纳税人税控盘维护费会计分录
  • 外籍个税起征点
  • 已收发票是什么意思
  • 个人财产转让所得在哪里申报
  • 技术服务费如何收取
  • 苹果Mac系统怎么用光盘安装
  • avcodec是什么意思
  • 推广费开票属于什么费用
  • tersafe.dll
  • yii2.0实现验证用户名与邮箱功能
  • 农产品的进项税额转出公式
  • 未入账发票可以作废吗
  • 财务费用利息收入怎么结转
  • pavprot.exe - pavprot是什么进程 作用是什么
  • 以专利权出资,能否使用专利权
  • 非货币性资产交换的记忆口诀
  • 最贵的域名是什么名字
  • php的魔术函数
  • php实现的浏览器有哪些
  • 微信小程序的视频怎么下载
  • bert模型能做什么
  • 优秀员工奖励现金是工资还是福利
  • 织梦系统基本参数
  • 帝国cms移动端
  • 在ubuntu中安装win10
  • PureFTP借助MySQL实现用户身份验证的操作教程
  • mongodb4.4.2安装教程
  • mongo groupby
  • Sqlite 操作类代码
  • 应收账款可以挂存货吗
  • 金税盘维护费发票
  • 直接材料成本总差异怎么算
  • 公司开发新产品的建议
  • 企业如何代员工做个税汇算清缴
  • 公司公账转私账违法吗
  • 固定资产处置损益怎么算
  • 残保金需要计提吗怎样做分录
  • 实收资本入账需要算设备安装费吗
  • 企业如何进行利润分配的会计处理
  • 建筑工程劳务分包,工伤责任承担
  • 税控服务费怎么记账
  • 贸易公司的经营模式
  • 软件测试费用明细
  • 委托加工的成本如何核算
  • ubuntu16.04终端在哪
  • win7系统关机很慢什么原因
  • centos开机自动运行
  • windows7怎么画画
  • win10开机绿色
  • win8.0升级win8.1
  • linux网络中断
  • perl-v
  • reg add命令
  • django forloop
  • 深入浅出jquery
  • node作为中间件做接口转发
  • android打包v1v2
  • javascript整数类型
  • 广东省电子税务局登录方式
  • 省国税局领导由谁任命
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设