位置: 编程技术 - 正文

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

  • 印花税的计税方法
  • 业务招待费的财务分录
  • 增值税的账务处理办法
  • 怎样确认个人所得税专项扣除操作流程
  • 什么是调账的依据
  • 建筑工程发票来自哪里
  • 承兑汇票给别人时对方需要出具什么
  • 污水处理企业如何捕捉碳中和减少了的碳足迹
  • 财产保险合同的被保险人自其知道
  • 增值税进项税金额是含税还是不含税
  • 单位注销合并时在原单位各个账户余额保留
  • 银行取现怎么取
  • 技术服务年费是什么
  • 工行代收资金清算过渡户是什么?
  • 增值税普通纳税人税率
  • 小规模纳税人季报是哪几个月
  • 研发企业退税
  • 跨年补计提工资汇算清缴
  • 不征税发票的12个税种
  • 个人使用过的设备有哪些
  • 免税店汇率是什么意思
  • 企业资产转移是什么意思
  • 门诊医保报销流程详细步骤
  • 微信转账的手续费规则
  • 个体工商户需要办公户吗
  • 农行k宝企业网银无法登录
  • nbr是什么意思中文翻译
  • 生产性生物资产和消耗性生物资产有什么区别
  • 原材料废料怎么做账
  • 高薪技术企业研发项目合同范本最新
  • 交易性金融资本
  • igfxhk.exe是什么进程
  • PHP:zip_entry_name()的用法_Zip函数
  • phpinclude
  • php foreach循环遍历数组
  • 外商投资企业如何定性
  • php日期时间函数
  • php安装oci8
  • formdata方法
  • unet模型代码matlab
  • nodejs 下载
  • web自动化测试平台
  • vscode nasm
  • 多线程并发python
  • 历史成本和重置成本的区别
  • 购进农产品直接销售核定农产品增值税进项税额计算表
  • 未达起征点的增值税怎么账务处理
  • 含消费税的商品开成了不含消费税怎么办
  • python中series的用法
  • php定义变量的方法
  • 企业所得税退税怎么操作流程
  • 开出银行承兑汇票一张,面值30000元,用于抵付
  • 政府补助怎么记账
  • 不得免征和抵扣税额抵减额分录
  • 理财产品产生的收益会成为本金吗为什么
  • 上海残疾人就业保障金计算公式
  • 公司股东为另一家公司全股
  • 年终奖通常怎么计算
  • 工业企业增值税税率
  • Windows下安装爱思助手V8
  • 怎么去掉0前面的逗号
  • 使用mysql进行模糊查询
  • sqlserver数据库怎么导出
  • xp系统乱了,怎么恢复
  • 怎么提高xp系统运行速度
  • osk.exe
  • winxp系统如何调整屏幕亮度
  • win2008远程桌面
  • win8.1怎么用
  • win10下itunes
  • 微信小程序实现账号密码登录
  • 深入理解新发展理念,推进供给侧结构性改革 心得体会
  • python gui视频教程
  • jQuery实现CheckBox全选、全不选功能
  • 修改cmd中显示的用户名!
  • jquery异步提交表单
  • 浏览器工作机制
  • jquery的使用
  • 电信业务发票
  • 发票事业单位有税号吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设