您的位置:首页 > 移动开发 > Android开发

android基础夯实2

2016-01-28 12:46 381 查看
24)不把功能都用H5实现然后把需求都扔给前段的人去做;

》用h5开发出的web app体验上并不比原生app差太多,但其跨平台的特性大大减低了开发成本,而且可以快速迭代。

25)ServiceManager、ActivityManager、packageManager 、*****Manager 都弄懂了?

>在Android系统中用到最多的通信机制就是Binder,Binder主要由Client、Server、ServiceManager和Binder驱动程序组成。其中Client、Service和ServiceManager运行在用户空间,而Binder驱动程序运行在内核空间。核心组件就是Binder驱动程序了,而ServiceManager提供辅助管理的功能,无论是Client还是Service进行通信前首先要和ServiceManager取得联系。而ServiceManager是一个守护进程,负责管理Server并向Client提供查询Server的功能。

>Service Manager存在的意义

1.Service Manager能集中管理系统内的所有服务,它能被施加权限控制,并不是任何进程都能注册服务的。

2.Service Manager支持通过字符串名称来查找对应的Service。

3.由于各种原因的影响,Server进程可能生死无常。如果有了Service Manager做统一的管理,那么Client只要向Service Manager做查询,就能得到Server的最新信息。

>Service Manager进程的主要工作如下:

1.初始化binder,打开/dev/binder设备;在内存中为binder映射128K字节空间;

2.指定SM对应的代理binder的handle为0,当client尝试与SM通信时,需要创建一个handle为0的代理binder,这里的代理binder其实就是第一节中描述的那个代理接口;

3.通知binder driver(BD)使SM成为BD的context manager;

4.维护一个死循环,在这个死循环中,不停地去读内核中binder driver,查看是否有可读的内容;即是否有对service的操作要求, 如果有,则调用svcmgr_handler回调来处理请求的操作。

5.SM维护了一个svclist列表来存储service的信息。

26)Binder 也搞清楚了?

>Android系统进程间通信机制Binder的总体架构由Client、Server、ServiceManager和驱动程序Binder四个组件构成.

>binder通信是一种client-server的通信结构,

1.从表面上来看,是client通过获得一个server的代理接口,对server进行直接调用;

2.实际上,代理接口中定义的方法与server中定义的方法是一一对应的;

3.client调用某个代理接口中的方法时,代理接口的方法会将client传递的参数打包成为Parcel对象;

4.代理接口将该Parcel发送给内核中的binder driver.

5.server会读取binder driver中的请求数据,如果是发送给自己的,解包Parcel对象,处理并将结果返回;

6.整个的调用过程是一个同步过程,在server处理的时候,client会block住。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: