这段代码为什么不会崩溃

白白白 2019-09-05 05:01:13
...全文
677 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
谈谈1974 2019-09-16
  • 打赏
  • 举报
回复
引用 10 楼 只为搞笑 的回复:
之所以不崩溃,是因为没有触发 ViewRootImpl 的 requestLayout 方法。实际上子线程不能更新UI,其实就是因为 requestLayout 方法会首先调用 checkThread 方法来检测线程。如果你的TextView高度宽度都设置成 wrap_content,那么基本上每次设置都会触发这个方法的


老哥,稳~
只注意过更新UI有检查线程的操作,没仔细看过触发条件
只为搞笑 2019-09-16
  • 打赏
  • 举报
回复
之所以不崩溃,是因为没有触发 ViewRootImpl 的 requestLayout 方法。实际上子线程不能更新UI,其实就是因为 requestLayout 方法会首先调用 checkThread 方法来检测线程。如果你的TextView高度宽度都设置成 wrap_content,那么基本上每次设置都会触发这个方法的
只为搞笑 2019-09-16
  • 打赏
  • 举报
回复
你线程中设置文本的时候,多打几个字,能换行那种,再试试。
zhaoqinmuxue 2019-09-16
  • 打赏
  • 举报
回复
可以看我的博客,刚写了一篇子线程更新UI不崩溃的问题
白白白 2019-09-10
  • 打赏
  • 举报
回复
引用 7 楼 王能 的回复:
和TextView没任何关系,子线程不能更新ui是Android的规定
我能不知道不能在子线程里更新吗?不然我还问这段代码为什么这么写不崩溃干嘛
王能 2019-09-09
  • 打赏
  • 举报
回复
和TextView没任何关系,子线程不能更新ui是Android的规定
白白白 2019-09-09
  • 打赏
  • 举报
回复
确实没有崩溃,当xml内的textView的为宽高固定值时或者都为match_parent时,在子线程里就能更新,没有崩溃。看了下应该是跟textview的更新机制有关
亲爱的Joe 2019-09-07
  • 打赏
  • 举报
回复
不了解kottlin(?名字存疑),没报错那就只有一个可能,你的改变UI的那个操作,确实在主线程执行的。 比如 mTextView.postDelayed(new Runnable(){ public void run(){ mTextView.setText("111111111"); } },2000); 这个为什么不崩溃?
Robin.Zhao 2019-09-06
  • 打赏
  • 举报
回复
按说是子线程崩溃,但是主线程正常跑,看上去没事一样,实际上子线程的代码是不生效的。
Krisez 2019-09-06
  • 打赏
  • 举报
回复
在子线程中更新UI线程,这个在一年前我一个失误操作。。突然发现 没有崩溃 并且还正常运行了。。。
我想应该是google对库进行了修改 自动切线程了。
当然没去探索源码。。。可以分享一下。。。
旅行蜗牛 2019-09-06
  • 打赏
  • 举报
回复
跟在子线程toast一样,虽然没出现闪退但是土司也不会出现的
YDimanche 2019-09-05
  • 打赏
  • 举报
回复
在安卓中子线程不能直接更新UI线程

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧