View的事件分发机制

分发过程

事件分发过程由三个方法共同完成:

dispatchTouchEvent

方法返回值为true表示事件被当前视图消费掉;返回为super.dispatchTouchEvent表示继续分发该事件,返回为false表示交给父类的onTouchEvent处理。

onInterceptTouchEvent

方法返回值为true表示拦截这个事件并交由自身的onTouchEvent方法进行消费;返回false表示不拦截,需要继续传递给子视图。如果return super.onInterceptTouchEvent(ev), 事件拦截分两种情况:  

  1. 如果该View存在子View且点击到了该子View, 则不拦截, 继续分发给子View处理, 此时相当于return false。
Read More

View的工作流程

DecorView是视图的顶级View,我们添加的布局文件是它的一个子布局,而ViewRootImpl则负责渲染视图,它调用了一个performTraveals方法使得ViewTree开始
三大工作流程,然后使得View展现在我们面前。

绘制的流程概要

注意:这里的三个步骤是每次从根视图到最上层视图依次执行完,再进行下一步骤。

三个步骤:

Read More

Service工作过程

概述

Service是一种计算型组件,其生命是嵌套在主线程中的。Service有两种状态:启动状态和绑定状态,并且只能显示启动,因此在AndroidManifest.xml中注册Service时,
只需要注册服务的类名即可。启动状态和绑定状态的区别在于:启动之后,Service的动作不受Activity的控制;而绑定之后,Service的动作是由Activity控制的。
在实现Service时,需要继承Service抽象类,并且重写onCreat()方法,因此,Service也具有启动和停止的概念。

Service是Android四大组件之一,用于执行长时间运行且不需要用户交互的任务。即使应用被销毁也依然可以工作。
组件可通过绑定到服务与之进行交互,甚至是执行进程间通信 (IPC)。例如,服务可在后台处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序进行交互。

Service分为以下几种不同的类型:

  • 前台:前台服务必须显示通知(Notification),可以跟用户交互,比如播放音乐。
Read More