Android知识点和文章分享Android面试问题专题分享

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

2018-02-28  本文已影响27人  正阳Android

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方法检查当前线程。

上一篇下一篇

猜你喜欢

热点阅读