位置: 编程技术 - 正文

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 拖拽加阴影)

  • 公司注销前存货低价标准
  • 超过500万需要补税吗
  • 企业收到购买标书的增值税专用发票可以抵扣吗?
  • 生产税净额计算实例
  • 个人所得税如果两份工作怎么扣
  • 电子发票和纸质发票哪个好
  • 资产负债表预收账款期末余额怎么算
  • 没收履约保证金交增值税吗
  • 给不是本单位的人开证明
  • 增值税专票需要哪些开票信息
  • 在建工程全部费用化
  • 审计风险可控吗
  • 职工教育经费的扣除标准是什么
  • 普票冲红可以部分冲红吗
  • 增长率的六个公式
  • 营改增后建筑业分包怎么交税
  • 安装调试费计入什么科目
  • 出口退税的钱退到哪里了
  • 运输途中发生货物丢失
  • 每季度不超过9万
  • 暂时关闭朋友圈
  • 产品质量监督检验
  • 已经计提的税金怎么做账
  • 私账的钱怎么弄到公账
  • 纳税调整需要调年度报表嘛
  • 装修费怎么记会计科目
  • php的八种类型
  • php中session和cookie
  • 销售下脚料所收的费用
  • yolo xml转txt
  • 员工不愿意缴纳个税 需要公司承担吗
  • 房地产企业土地出让金抵减销项税额
  • php一个页面多个分页
  • PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
  • 网络电话综合布线
  • vuex中this.$store.commit和this.$store.dispatch的用法
  • vue基础知识
  • php实现定时自动刷新
  • 发票内容服务费可以吗?没有明细
  • 长期待摊费用如何处理
  • mysql数据库外键约束怎么写
  • 以前年度亏损要调整吗
  • access数据库不能存放什么数据
  • 下列行为免征增值税的有
  • 无法偿付的应付账款计入什么科目政府会计
  • 一般纳税人商品暂估按销售的数量可以暂估成本吗
  • mysql索引失效的几个场景
  • 企业资金管理是什么意思
  • 免征增值税个税计税依据
  • 劳务费发票入账科目
  • 让渡资产使用权属于收入吗
  • 生产车间计提费用会计分录
  • 增值税报表申报流程
  • 交哪些费用
  • 咨询公司评估选择标准
  • 现金日记账年结需要另起一页吗
  • 应付票据贴现利息收入会计分录
  • 资产负债表负债率怎么计算
  • 个人出租租房收什么税
  • 总分类账户与明细分类账户是对账户按照其
  • sql 修改表的字段名称
  • win7开关机时间设置
  • win10设置不了
  • msi安装错误代码2503
  • win10预览版21277
  • centos6.7防火墙
  • mac怎么分区硬盘分区
  • macbookzen
  • Win10 Redstone 11082视频快速上手:已知bug及新变化一览
  • qt pro load
  • nodejs word
  • shell脚本-ge
  • vue-cli 使用 报错
  • 利用pm2部署多个设备
  • python的gym
  • unity3d物理现象模拟
  • 广州地税局官网办事点
  • 未缴税税务说明书
  • 印花税怎么计提科目
  • 山西省网上营业执照申请官网?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设