位置: 编程技术 - 正文

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

  • 增值税销项进项什么意思
  • 增值税核算办法
  • 哪些情况可免征增值税
  • 中税协网站怎样补学时
  • 金蝶kis专业版的优缺点
  • 房地产开发企业资质证书
  • 带薪年假是入职就有还是要等一年以后
  • 出口合同包括哪些条款
  • 三证合一后个体户注销流程
  • 会计制度方法
  • 主营业务收入开普票怎么记账
  • 去年的费用票会计分录
  • 小规模纳税人超过500万可以不转一般纳税人吗
  • 计提和缴纳企业所得税分录
  • 差额拨款的事业单位属于预算单位吗
  • 房子免租期
  • 一般纳税人支出的钱没有发票年底怎么处理
  • 期末应交企业所得税怎么算
  • 已认证未付款分录
  • 企业计提固定资产折旧
  • 首次购买税控设备政策
  • 应纳税额计算举例
  • 销售折让的税收分类编码
  • 企业发放给员工子女抚养费
  • 公益性捐赠公告
  • 高杠杆资金是什么意思
  • 劳务费发票已开款未收回如何做帐?
  • 退回的企业所得税如何在报表中显示
  • 玩游戏时切换窗口怎么弄
  • commandlineoptionsyntaxerror翻译详情
  • 公司基本户注销流程
  • 上市公司的组织形式
  • dhcp存在哪些安全隐患
  • php二维码生成代码
  • 公司主要开支是指什么
  • Windows10开始菜单透明
  • PHP:mb_strrpos()的用法_mbstring函数
  • linux内存缓存
  • 转销盘盈会计分录
  • 工业企业出租房屋的租金收入应计入
  • 委托加工物资实际成本构成一般包括
  • php数组排列组合
  • 一文看懂华为新品发布会
  • 固定资产一次性扣除如何做账
  • 一般纳税人和小规模公司怎么区分
  • mysql日期和时间类型
  • 营运资产周转次数计算公式是什么意思
  • 房地产企业成本核算方法
  • 公司购入的财务会计分录
  • 递延所得税的会计核算
  • 贷款减值准备如何计算
  • 已认证发票红冲全流程操作
  • 广告设计合同属于什么合同
  • 苗木税票怎么抵扣
  • 个人社保代扣业务是什么意思
  • 缴纳工会筹备金应该记什么科目
  • 房地产开发企业资质管理规定
  • 五证合一办理步骤
  • 备查账目
  • mysql数据库遇到的故障及分析
  • mysql不同数据库不同数据表导入数据
  • mysql工作内容
  • macbookpro如何扫描
  • win10动态磁贴不更新
  • linux中ps命令详解
  • mmtray2k.exe有什么作用 是什么进程 mmtray2k进程查询
  • win1020h2镜像
  • w8网络设置
  • linux服务器安全防护方案
  • winpe 系统还原
  • opengl 画线
  • easyui datagrid loader
  • express常用中间件
  • js 浏览器全屏
  • 浅析科学发展观的核心立场
  • js前端搜索功能
  • angularjs1.5
  • unity 3渲2
  • 6种javascript显示当前系统时间代码
  • 江苏省国税总局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设