Android高级笔记

一、在子线程能否更新UI?

在 ViewRoot 还没有被创建的时候,是可以在子线程中直接更新 UI。

  • ViewRoot 在 onCreat 时没有创建
  • ViewRoot 在 onResume 后才创建
  • UI 线程是没有加锁的,在非 UI 线程更新 UI 时候是不安全的操作,所以 Android 不让在子线程中直接更新 UI。

Android笔记:View 点击事件的传递

方法介绍:

  • boolean dispatchTouchEvent(MotionEvent ev) {}

//负责分发事件,如果事件能传递到当前View, 当前 View的此方法一定会被调用


  • boolean onInterceptTouchEvent(MotionEvent event){}

//负责拦截事件,一旦拦截,在同一个事件序列中此方法不会再被调用,返回 true 拦截,false 不拦截。


  • boolean onTouchEvent(MotionEvent event){}

//负责消耗事件,例如处理点击事件,返回 true 代表消耗了此事件。