位置: 编程技术 - 正文

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

  • 电子税务局能查到个税申报信息吗
  • 小规模纳税人通用申报表
  • 什么是货物运输保险
  • 银行转账支付计入什么科目
  • 发票上的不含税单价怎么算的
  • 房地产企业季度所得税申报
  • 财务发票报销时限是多久
  • 深圳增值税发票选择确认平台使用
  • 小规模纳税人减征额怎么计算
  • 收到物业费普通发票做账
  • 企业全额承担社保怎么算
  • 母公司给子公司担保需要决议吗
  • 税务局买税控盘需要的资料
  • 生活垃圾处理项目基础金融产品包括
  • 农产品进项税抵扣计算例题
  • 销售结算款扣款怎么记账?
  • 小规模自开专票税率是1%还是3%
  • 租房押金收不回来怎么做账
  • applepay怎么用云闪付
  • macos monterey值得安装吗
  • 不具备生产条件的生产经营单位
  • 会计中在建工程与建筑安装工程的区别
  • win10启用网络发现保存后又变成了关闭
  • 先开票后收款的发票怎么备注
  • 企业购入固定资产在每期末应使用公允价值法进行计量
  • 德纳里山
  • 员工的生活费会不会扣个税
  • 法定盈余公积金达到注册资本的多少时不再提取
  • 认缴制注册资金怎么处理账务
  • 产品成本核算应正确划分哪些方面的费用界限
  • 还在用夸克?这3款能安装插件的手机浏览器不香吗_Via_
  • 企业购买财务软件算什么费用
  • 提示框架
  • js异步解决方案
  • 一天撸一个财务APP系统【安卓端+前端+后端】
  • vue做项目的流程
  • html前端开发教程
  • php公众号推送完整示例
  • 收到销售方的负债怎么办
  • 普通发票可以跨年报销吗
  • 结构性存款随时可取么
  • 应收账款转回坏账怎么办
  • 过路费发票抵扣2023新规定
  • 应付账款转入营业外收入的证明
  • 上一年度的费用退回清算表怎么填
  • 其他收益在利润表填在哪里
  • php用户评论
  • python子类init
  • 其他应收款主要核算什么
  • 数据库镜像是什么意思
  • mysql触发器菜鸟教程
  • 核定征收的企业需要汇算清缴吗
  • 固定资产贷款利息计算器
  • 专项拨款会计分录
  • 银行电子汇票到期后多久到账
  • 可供出售金融资产属于什么科目
  • 其他业务收入的现金流量项目
  • 其他债权投资发生减值会影响所有者权益总额吗
  • 供应商质量索赔流程
  • 为什么购入股票是综股
  • 小规模纳税人怎么申报增值税报表
  • 注册资本和实收股本的区别
  • mysql5.7最新版
  • 让windows server 2003 32位支持8G内存大内存
  • win7如何查看图片的rgb
  • linux命令行查找
  • win8系统win10有什么区别
  • runservice.exe - runservice是什么进程 有什么用
  • pdv是什么格式文件
  • linux中rename命令详解
  • 车钥匙失灵了10秒教你快速解决
  • Coroutine couldn't be started because the the game object 'GameController' is inactive!
  • ftql
  • linux,windows
  • angularjs常用总结
  • 安卓app性能测试
  • eclipse的ssh框架搭建
  • 入户走访时宣传内容
  • 预到船舶是什么
  • 企业所得税的税负率多少合适
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设