Android中子线程真的不能更新ui吗?

Android中子线程真的不能更新UI吗?

参考: https://www.cnblogs.com/xuyinhuan/p/5930287.html

举例:,在onCreate方法中创建了一个子线程,并进行UI访问操作,譬如对textView进行操作,发现是没有问题的,并没有报错,但是如果你休眠了2000毫秒,那么此时就会报错:只有创建这个view的原始线程才能操作这个view;也就是ui线程才能修改ui;

为什么第一次没有问题?

     ViewRootImpl的创建在onResume方法回调之后,而我们一开篇是在onCreate方法中创建了子线程并访问UI,在那个时刻,ViewRootImpl是没有创建的,无法检测当前线程是否是UI线程,所以程序没有崩溃一样能跑起来,而之后修改了程序,让线程休眠了200毫秒后,程序就崩了。很明显200毫秒后ViewRootImpl已经创建了,可以执行checkThread方法检查当前线程。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 好多年前,应该是看张曼玉的电影《花样年华》时,就惊诧于旗袍的艳魅之美了。今天看到轩帅精心制作的旗袍秀“花漾”,又被...
    东丰林波阅读 474评论 0 0
  • 1. 获取最近运行容器的id 这是我们经常会用到的一个操作,按照官方示例,你可以这样做(环境ubuntu): $I...
    yshenhn阅读 496评论 0 1