一、Android系统为什么不允许在子线程中访问UI?
这是因为Android的UI控件并不是线程安全的,如果多线程中并发访问可能导致UI控件处于不可预期的状态.
那为什么系统不对UI控件的访问加上锁机制呢?
缺点有两个:首先,加上锁机制会让UI访问的逻辑变得复杂;其次锁机制会降低UI访问的效率,因为锁机制会阻塞某些线程的执行.
鉴于这两个缺点,最简单且高效的方法及时采用单线程模型来处理UI操作,对于开发者来说也不是很麻烦,只是需要通过Handler切换一下UI访问的执行线程即可.
一、Android系统为什么不允许在子线程中访问UI?
这是因为Android的UI控件并不是线程安全的,如果多线程中并发访问可能导致UI控件处于不可预期的状态.
那为什么系统不对UI控件的访问加上锁机制呢?
缺点有两个:首先,加上锁机制会让UI访问的逻辑变得复杂;其次锁机制会降低UI访问的效率,因为锁机制会阻塞某些线程的执行.
鉴于这两个缺点,最简单且高效的方法及时采用单线程模型来处理UI操作,对于开发者来说也不是很麻烦,只是需要通过Handler切换一下UI访问的执行线程即可.