位置: 编程技术 - 正文

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

  • 什么时候要计提坏账准备
  • 资源税应该如何计算
  • 汇算清缴需补税
  • 转出未交增值税最终怎么转平
  • 出口退税是先交税后退税吗
  • 销售货物应税劳务服务清单给客户一份是不是就可以了
  • 用友t6如何生成当月的财务报表
  • 固定资产清理期末余额在借方是什么意思
  • 劳务报酬现金 过账
  • 政府发放的人才补贴,企业可以增加条款要求离职返还吗
  • 跨境电商的钱怎么到账
  • 非盈利组织是两套账吗?
  • 核算会计科目职工薪酬的范围
  • 长期待摊费用税前扣除
  • 公司用现金支付的形式有哪些
  • 以旧换新的金子划算吗
  • 个人给公司垫付款起诉状
  • 用公户付了一笔款怎么办
  • 房地产企业土地增值税
  • 280服务费抵税分录
  • 发票代码不是10位,怎么提示输入12位的
  • 服务业进项税加计抵减
  • 长期股权投资的初始计量
  • 计提福利费用会计分录
  • 消费税如何避税计算
  • 营改增项目
  • 发给客户补货的产品怎么做?
  • 分公司使用总公司业绩投标
  • 笔记本电池保养注意事项
  • 网件R6400路由器怎么样?网件R6400上网与传输评测的教程
  • 无法找到脚本文件vbs
  • windows11怎么回退
  • 应付债券的应付利息怎么计算
  • 贷款核销对个人的影响
  • LangChain Agent 执行过程解析 OpenAI
  • 目前最流行的婚纱照风格
  • php发送短信
  • 施工企业会计核算特点有哪些
  • 安装运行所需环境怎么填
  • nvm for window
  • python基础100例
  • php用在哪些方面
  • 工业企业采购商品过程中发生的进货费用
  • 飞机票电子发票能报销吗
  • 免税农产品发票怎么抵扣申报
  • mysql的服务器
  • 家电销售的税率
  • 免税农产品按多少抵扣
  • 一般纳税人企业所得税税率
  • 员工出差报销补贴政策
  • 购车税费怎样计算2023
  • 收不回来的问题
  • 公司库存商品科目余额太大怎么办
  • 库存现金的使用限额
  • 出差包干费包括什么
  • 会计账簿按用途分类分为什么
  • mysql在数据分析中的作用
  • sqlserver表死锁
  • 当恢复系数e=1时碰撞属于什么碰撞
  • SQLServer中SELECT语句的执行顺序
  • 苹果os X El capitan无法更新了吗
  • windows ssh-keygen
  • Windows server 2003 密码忘了
  • 如何清理注册表的垃圾文件
  • centos6.5安装步骤
  • win7系统自带游戏在哪
  • office进程
  • cocos2dx4.0教程
  • unity 插件开发
  • eclipse的android配置
  • mysql源码安装和二进制安装
  • javascript高级程序设计最新版
  • linux实现shell代码
  • python中中文字符
  • android ui开发
  • 同源策略详解
  • 卷票真伪查询系统国税
  • 怎样从增值税发票查询
  • 税控机怎么开发票
  • 佛山顺德人才房申请条件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设