Android系统中的视图组件并非线程安全的,若是要更新视图,必须在主线程中更新,不能够在子线程中执行更新的操做。 Android系统中的Looper负责管理线程的消息队列和消息循环。经过Looper.myLooper()获得当前线程的Looper对象,经过Looper.getMainLooper()获得当前进程的主线程的Looper对象。 Android的消息队列和消息循环都是针对具体线程的,一个线程能够存在一个消息队列和消息循环,特定线程的消息只能分发给本线程,不能跨线程和跨进程通信。 Handler的做用是把消息加入特定的Looper所管理的消息队列中,并分发和处理该消息队列中的消息。构造Handler的时候能够指定一个Looper对象,若是不指定则利用当前线程的Looper对象建立。安全
Handler对象管理的Looper对象是线程安全的,无论是添加消息到消息队列仍是从消息队列中读取消息都是同步保护的,因此不会出现数据不一致现象。oop