当前位置: 首页 > news >正文

Android 为什么子线程不能更新UI

开了线程,更新UI 一般会调用setText(),setImageView 回调到这里面来 ViewRootImpl checkThread(),checkThread()用来检测线程。

    void checkThread() {if (mThread != Thread.currentThread()) {throw new CalledFromWrongThreadException("Only the original thread that created a view hierarchy can touch its views.");}}

其中的mThread在构造函数中赋值mThread = Thread.currentThread();,是主线程

    public ViewRootImpl(Context context, Display display, IWindowSession session,boolean useSfChoreographer) {
//---------mThread = Thread.currentThread();
//-----------
}

而如果在子线程中更新UI,调用checkThread的时候Thread.currentThread()就是子线程,然后和mThread 不相等,就会抛出异常。


http://www.mrgr.cn/news/9237.html

相关文章:

  • 大数据技术之Zookeeper客户端命令行操作、节点类型、监听器原理(3)
  • Docker学习第一课【安装Docker及MySQL】以及遇到的一些问题【已解决】
  • 监控易仪表盘-设备运行状态监控界面解读
  • CSS定位指南:深入解析position属性的奥秘
  • 【自动驾驶】控制算法(一)绪论与前期准备
  • 日志审计-graylog ssh登录超过6次告警
  • Web-ssrfme
  • kafka常用命令汇总
  • ElasticSearch 8.15.0 与 Kibana 8.15.0 尝鲜体验
  • 大数据毕业设计开题报告100例
  • 基于matlab的深度学习案例及基础知识专栏前言
  • python interpreter process exited with a non-zero exit code 126 权限不够
  • shell程序设计入门(三)
  • php与nginx的高速缓存
  • 进程和线程(操作系统part2)
  • 鸿蒙(API 12 Beta3版)【DRM Kit 简介】数字版权保护
  • 【前端】vue数据监测原理
  • Makefile简单使用
  • Matlab基本知识
  • 裸机:串口通信