看源码,顺带说一句android代码颜色,字体大小,有关主题的设置http://color-themes.com/,现成的Fie -->import setting
流程图,大概就是这样的
详细参考链接 http://www.2cto.com/kf/201609/550439.html
Android进程间通信(IPC)机制Binder
基础篇
Android进程间通信(IPC)机制Binder简要介绍和学习计划
Android深入浅出之Binder机制一文从情景出发,深入地介绍了Binder在用户空间的三个组件Client、Server和Service Manager的相互关系,Android Binder设计与实现一文则是详细地介绍了内核空间的Binder驱动程序的数据结构和设计原理。非常感谢这两位作者给我们带来这么好的Binder学习资料。总结一下,Android系统Binder机制中的四个组件Client、Server、Service Manager和Binder驱动程序的关系如上图所示:
1. Client、Server和Service Manager实现在用户空间中,Binder驱动程序实现在内核空间中
2. Binder驱动程序和Service Manager在Android平台中已经实现,开发者只需要在用户空间实现自己的Client和Server
3. Binder驱动程序提供设备文件/dev/binder与用户空间交互,Client、Server和Service Manager通过open和ioctl文件操作函数与Binder驱动程序进行通信
4. Client和Server之间的进程间通信通过Binder驱动程序间接实现
5. Service Manager是一个守护进程,用来管理Server,并向Client提供查询Server接口的能力
通过下面四个情景来分析Binder源代码,以进一步理解Binder机制:
1. Service Manager是如何成为一个守护进程的?即Service Manager是如何告知Binder驱动程序它是Binder机制的上下文管理者。
2. Server和Client是如何获得Service Manager接口的?即defaultServiceManager接口是如何实现的。
4 Service Manager是如何为Client提供服务的?即IServiceManager::getService接口是如何实现的。
我们在Android系统开发应用程序时,都是基于Java语言的,因此,我们会在最后一篇文章中,详细介绍Android系统进程间通信Binder机制在应用程序框架层的Java接口实现:
5. Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析。
启动一个服务至少需要在2个进程之间进行跨进程通信,
1,进程A向AMS发送一个请求
2,AMS处理之后,回到进程A所启动的服务
可以参考链接
Android中事件传递按照从上到下再从下到上进行层级传递,事件处理从Activity开始到ViewGroup再到View,如果View没有消费事件会再次从View到ViewGroup再到Activity最后事件被抛出消费掉。流转的流程图如下:
dispatchTouchEvent和TouchEvnet return false的 时候,事件都会回传给父控件的onTouchEvent处理
onInterceptTouchEvent默认为false不进行事件拦截,OnDispatchTouchEvnet默认为true进行事件分发,onTouchEvent需要根据具体的View是否设置了listener及具体View的实现进行区分是否为true
Activity的dispatchTouchEvent不管返回true或false都会进行分发
如果事件在具体的View或者ViewGroup的onTouchEvent返回true,则表明事件被消费,事件传递机制就会结束
例子可以参考