一、原因:

非主线程使用TextView.setText(),“有时会出现”Only the original thread that created a view hierarchy can touch its views

二、结论:

setText()会导致文字长度发生改变,如果你的TextView的长度是wrap_content,那么会导致重新计算分配长度,导致运行checkThread()函数,出现错误。虽然可以用非wrap_content修饰达到规避的效果,但这是不推荐的。

三、不推荐简单说明

  • 不能直接理解为由于非主线程刷新UI导致,而是由于某些刷新过程最终执行了checkThread()函数导致的。
void checkThread() {if (mThread != Thread.currentThread()) {throw new CalledFromWrongThreadException("Only the original thread that created a view hierarchy can touch its views.");}
}
  • checkThread的使用
  • requestLayout的使用(一部分)
  • 我们可以看到,TextView里面有许多方法都会使用到requestLayout,都会可能导致此错误,所以用取巧的方法规避非主线程刷新的问题,一定是不符合设计初衷的,还是应当在主线程刷新UI!

Android刷新UI导致崩溃的探究——Only the original thread相关推荐

  1. Android:Socket客户端开发,Android 的Socket客户端优化,Android非UI线程修改控件程序崩溃的问题

    一.Android:Socket客户端开发 创建一个工程 我们要做的是按下按键之后,去往服务器 (服务器) 或者我们自己写的服务器 ,给他发送一些预定好的东西 然后打开操作界面 然后修改一下 你要发送 ...

  2. 【Based Android】Android Sensor感应器介绍(二)线程中刷新UI 创建一个android测力计...

    上一篇文章http://www.cnblogs.com/octobershiner/archive/2011/11/06/2237880.html介绍了sensor的基本知识以及一个使用其中加速度感应 ...

  3. 【问题解决】Android JDK版本不匹配导致崩溃踩坑记录

    [问题解决]Android JDK版本不匹配导致崩溃踩坑记录 部分机型反馈崩溃问题 谷歌回复与解决方案 Android打包脱糖操作 对比与排查 总结 前几天同事遇到一个非常诡异的报错,紧急处理后,趁着 ...

  4. android频繁点击ui崩溃,android easeui 集成 启动崩溃

    android easeui 集成 启动崩溃 07-19 15:46:20.084 829-829/? E/WifiTrafficPoller:  packet count Tx=9079 Rx=18 ...

  5. Android中UI(View)的刷新

    2019独角兽企业重金招聘Python工程师标准>>> 看了很多资料,翻啊翻啊,似乎有些了解了. Android中对View的更新有很多种方式,使用时要区分不同的应用场合.我感觉最要 ...

  6. Android开发高性能之 (崩溃优化)

    文章目录 1. Android 的两种崩溃 1.1 Native 崩溃的捕获流程 2. 如何客观地衡量崩溃 3.如何客观地衡量稳定性 4.应用崩溃了,你应该如何去分析? 4.1 崩溃信息 4.2 系统 ...

  7. android 刷新布局,Android之刷新布局

    Android之刷新布局 发布时间:2018-08-27 17:06, 浏览次数:337 , 标签: Android 学习安卓的高级技巧,其中的自定义View是必备课程.目前在研究该方面的东西,能用代 ...

  8. Android刷新机制-View绘制原理

    Android刷新机制-View绘制原理 Android刷新机制-SurfaceFlinger原理 Android刷新机制-Choreographer原理 一.概述 本文将从startActivity ...

  9. android操作ui线程

    runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(MainActivity.this, "网络 ...

最新文章

  1. 旷视提出AutoML新方法,在ImageNet取得新突破 | 技术头条
  2. python3.5将list类型转换为矩阵类型
  3. matlab 读写其他格式数据文件(excel)
  4. H264 TS/ES
  5. linux nohup不生成日志,linux重定向及nohup不输出的方法
  6. 王道 —— 操作系统的发展与分类
  7. YARN作业提交流程剖析
  8. bzoj 3382: [Usaco2004 Open]Cave Cows 3 洞穴里的牛之三(切比雪夫距离)
  9. [EMQX-V3.4.6源码解析系列]-1-EMQX简介
  10. Swing 主题 - FlatLaf
  11. iOS 手势解锁密码
  12. NOIP2012 国王游戏(贪心)
  13. OneNET麒麟座应用开发之九:与SD卡通讯并保存数据
  14. 【程序员必修数学课】-基础思想篇-二进制-原码反码补码的数学论证
  15. Terracotta Server集群
  16. C盘根目录下只能创建文件夹不能新建文件的解决办法
  17. 力天创见客流分析功能需求
  18. php 格式化电话号码
  19. [每日100问][2011-9-30]iphone开发笔记,今天你肿了么
  20. #今日论文推荐#掰开揉碎一篇Molecular Cancer文章来看circRNA的RBP机制研究是如何展开的

热门文章

  1. 袋鼠云研发手记 | 袋鼠云EasyManager的TypeScript重构纪要...
  2. 唐国庆出任木林森执行总经理,给木林森带来怎样的想象空间?
  3. 1000道最新高频Java面试题,覆盖25个技术栈(多线程、JVM、高并发、spring、微服务、kafka,redis、分布式)从底层原理到架构!
  4. maximo跟java_maximo中直接应用得到数据库联接
  5. 接着,运营基础知识(福利篇)
  6. cvte java_cvte一面——java开发工程师
  7. 系统重装用户名与计算机名一致,win7刚重装系统 开机的用户名和密码怎么办-win7用户名,win7默认用户名是什么...
  8. 世界顶级机器学习科学家黄恒加入京东,出任京东大数据首席科学家
  9. 用canvas实现九宫格切图之手把手教学(uniapp+ts)
  10. 2021年中国企业风险投资发展现状及未来发展趋势分析[图]