位置: 编程技术 - 正文

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

  • 银行存款利息收税吗
  • 发票章是否需要到税务局备案
  • 税务清算需要什么条件
  • 税收征管法实施细则全文最新
  • 医疗保险单位和个人交的区别
  • 金税盘递减税款2022
  • 融资租赁本金和租金的区别
  • 固定资产交换的账务处理
  • 财务软件要入固定资产吗
  • 期末调汇的会计怎么做账
  • 货币的时间价值名词解释
  • 增值税专用发票可以开电子发票吗
  • 定额发票上盖什么章
  • 附加税是当月计提当月缴纳吗
  • 增值税税率改革的意义
  • 关于两套账老板和会计须知的4个点
  • 应付工会经费 实际支付
  • 建筑工程预收款开票会计分录
  • 分公司给总公司管理费的会计分录
  • 员工探亲路费报销交个税吗
  • 车辆购置税完税证明电子版二维码怎么扫
  • 1697508581
  • 内部权益性投资是指
  • 王者荣耀进不去怎么回事最新
  • 二手车买卖如何纳税
  • 金银镶嵌首饰在哪个环节交消费税
  • 公司支出的消防费用
  • php require include
  • 企业购入的专利权属于什么
  • vueajax请求的五个步骤
  • 最强超频
  • php redis常用命令
  • 外商投资工业企业有哪些
  • 工商银行电子回执单怎么查看
  • 编写一个php程序,展示双引号和单引号的区别
  • 前端解决跨域问题的代理
  • 简单解决微信文案的方法
  • javascript导入包
  • npm ERR! notarget No matching version found for xxx@^1.0.64. npm 插件安装失败
  • 序列标注技术应用
  • 小微企业的增值税税收优惠政策
  • 给员工期权和给股票的区别
  • python中列表清空
  • 多付款退回怎样写说明
  • 自由会计服务类工作者
  • vue2响应式原理面试回答
  • 企业罚钱合理吗
  • 外商投资有限合伙企业
  • 买一赠一怎么做账
  • 无法收回的款项
  • 出纳去银行取钱需要带什么
  • 发票开错没有作废可以红字冲销吗?
  • 开办费的最新账务处理2021
  • 提前预支工资怎么打条子
  • 长期挂账的往来款税务处理
  • 经纪代理服务范围
  • 支付宝企业账户在哪里查看
  • 收到质保金怎么写收据
  • 公司员工支出
  • 销售回款率怎么计算,麻烦知道的告诉我,11
  • 固定资产净值怎么算
  • sql server怎么执行
  • bitronix 连接 MySQL 出现MySQLSyntaxErrorException 的解决方法
  • win7进bios设置启动盘
  • 苹果电脑如何访问windows共享文件
  • w10开发者模式
  • win10怎样永久激活
  • .exe是什么软件
  • win7打印机删除后怎么恢复
  • cocos2dx框架
  • js导入图片
  • java的gui框架
  • PHP+jquery+ajax实现分页
  • linux显示中文
  • 教育费附加最新政策2023
  • 浙江省网上税务局申报
  • 印花税怎么计提科目
  • 山东省税务局在哪
  • 12345市民热线什么时候有的
  • 国家产业政策是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设