位置: 编程技术 - 正文

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

  • 普票不能抵扣要坐在帐里吗
  • 房屋租赁账务处理程序
  • 高新技术企业认证都有哪些条件
  • 上市公司现金流充足说明什么
  • 销售收入包括应收销货款
  • 业务招待费怎么做会计分录
  • 公司收到银行转账会计分录
  • 无形资产出售收入属于营业收入吗
  • 仓库货物破损处理方法
  • 生产企业电费要不要计提?
  • 纳税总额包括
  • 安保服务费税率几个点怎么算
  • 汽车加油专票可以抵扣税款吗
  • 新开公司季初季末人数和资产可以填0吗
  • 贸易公司收到货款会计分录
  • 跨区经营的税务政策
  • 金税三期上线后的税收征管问题
  • 小程序交易需要什么条件
  • 无法取得房地产原值怎么缴纳房产税?
  • 苹果电脑快捷键删除
  • 企业废业怎样做会计分录
  • 未分配利润是怎么算出来的
  • 高新企业认定条件2019
  • 腾讯手游助手如何退出登录
  • 公司租的宿舍记什么科目
  • 企业购买银行理财
  • php上传进度条
  • 外币报表折算差额计入其他综合收益
  • 电竞显示器怎么调整参数
  • 员工的医药费
  • Android ImageView使用详解(系列教程三)
  • 提取法定盈余公积的公式
  • mysql的索引是什么
  • 固定资产盘点方案
  • 没有发票可以先入费用科目吗
  • 普通发票和增值税发票的税率
  • Centos5.5中安装Mysql5.5过程分享
  • 权益法下公允价值变动计入其他综合收益
  • 固定成本和变动成本包括哪些
  • 对方公司已注销还能起诉吗
  • 应收分保合同准备材料
  • 核定征收无收入
  • 企业刚注册成功又要注销要什么手续
  • 短期借款的账务处理借增贷减
  • 内账的表格怎么做
  • 房产税开征利好那些概念股 新闻
  • 调整账户有哪几类
  • 合同分三次付款怎么写
  • 资金结存属于资产类吗
  • 开票金额大于付款金额 多余部分为返点
  • 应收账款折率
  • win8换win7详细过程
  • mac中怎么给表情添加文字
  • windows server 2008 企业版
  • windows防病毒
  • 安卓设备连接苹果设备
  • linux常用小技巧
  • googletoolbarnotifier.exe是什么进程?GoogleToolbarNotifier怎么关闭?
  • windows蓝屏代码大全及解决方案
  • win8调分辨率
  • linux中的ls命令的功能是变换工作目录到目标指定目录
  • linux命令date
  • svchosl.exe - svchosl是什么进程 有什么作用
  • 安装完win8后没有无线网络
  • org.cocos2d.straydiary
  • perl cgi
  • 用jQuery实现优酷首页轮播图
  • node.js使用教程
  • unity projector
  • 利用jQuery及AJAX技术定时更新GridView的某一列数据
  • vue-cal
  • nodejs如何使用
  • javascript高级程序设计最新版
  • javascript高级编程
  • 2015年5-6月关于Android用户隐私保护的3篇顶级论文【2015.5-2015.6】
  • unity3d ui
  • 实用js代码
  • jquery插件大全
  • 北京市国家税务局网站官网
  • 南京国家税务局网上办税服务厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设