位置: 编程技术 - 正文

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

  • 普通发票领多了会怎么样
  • 实习生个人所得税需要申报吗
  • 小规模纳税人开票税率
  • 国库存款利息收入计入哪个预算收入科目
  • 资源税征税范围有哪些
  • 建筑材料专票抵扣
  • 将自产的产品用于对外投资
  • 土地使用权入账价值
  • 房租本月入账上月的怎么摊销?
  • 专项应付款转资本公积
  • 小企业会计准则和企业会计准则的区别
  • 公司购买销售材料怎么写会计分录?
  • 厂部管理人员工资属于什么会计科目
  • 劳务派遣差额征税税率是多少
  • 小型微利企业所得税优惠政策
  • 三证合一后还要去税务局吗
  • 所得税费用税率规定
  • 增值税纳税义务人
  • 企业合并报表后为何要抵消盈余公积补提?
  • 仓储费怎么账务处理
  • 计提个税会计科目怎么做
  • 多交的增值税附加税怎么做账
  • 京东白条账单制和订单制是什么样的
  • 搜索特定
  • php页面传值
  • 误餐费怎么入账
  • php分页函数封装
  • php中split
  • 出租固定资产取得的净收益计入什么科目
  • oeloader.exe - oeloader是什么进程 有什么用
  • 浏览器下载量排名第一的是
  • php yeid
  • 在海里的章鱼
  • php文本统计访问量
  • axios.defaults.baseURL的三种配置方法
  • 建筑业预缴的个人所得税怎么在申报表体现
  • aws documentation
  • 稳岗补贴什么时候到账
  • 网站客服系统在线
  • 合伙企业的经营所得税率
  • 零售企业商品盘点发生溢余后,在查明原因前,应按
  • 固定资产清理产生的费用入什么科目
  • 工会经费的会计分录2022
  • 发票抬头为个人的纳税人识别号
  • 如何根据销售额的降序计算销售排名
  • 番茄开发票属于蔬菜吗?
  • 合营企业和联营企业是重大影响吗
  • 珠宝首饰可以开发票吗
  • 个税子女教育扣除申报方式怎么选
  • mysql多表左连接查询
  • 行政单位基建管理办法
  • 电子税务局增值税抵扣流程
  • 物流公司车辆过户要3万
  • 政府会计制度之1613在建工程
  • 怎样单方面注销手机卡
  • 总资产报酬率的公式
  • 购买电脑增值税税率是多少
  • 商业承兑汇票和银行承兑汇票的区别
  • 工业用地使用年限30年与50年有什么区别
  • 明细账填制要求
  • mysql 5.7启动
  • 教大家如何重做作业
  • ksysslim.exe
  • 怎么进入win7系统
  • efi怎么安装系统
  • win8怎么关闭系统更新
  • win7 64位系统只有搜狗浏览器可以打开网页其他浏览器打不开的故障原因及解决方法
  • win7怎么禁用触摸屏
  • linux sed
  • bootstrap框架怎么用
  • opengl详解
  • 不易引起无意注意的是
  • hadoop有几个版本
  • Python爬取网易云一首歌的全部评论并进行分析
  • linux实现shell代码
  • js上传文件到后端
  • 安卓Android下载
  • [置顶]公主大人接下来是拷问时间31
  • 个人可以免费开店的平台有哪些
  • 湖北省电子税务局登录入口
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设