Binder
文章平均质量分 92
ctoast001
这个作者很懒,什么都没留下…
展开
-
android智能指针sp和wp
普通指针的使用隐患和智能指针的解决办法普通指针在使用过程中的三个隐患:指针没有初始化。指针没有释放。释放后没有置空。智能指针的解决办法:构造函数中初始化。使用计数器,计数器为0时释放。将指针封装在智能指针中,析构时释放。标准库中的智能指针为shared_ptr,而android Binder相关代码使用wp,sp作为智能指针。android中的智能指针计数器由obje...原创 2020-02-02 21:00:23 · 574 阅读 · 0 评论 -
Binder native层源码分析(五):sm对数据的接收以及处理
1111原创 2020-02-02 20:52:04 · 447 阅读 · 0 评论 -
Binder native层源码分析(三):BpBinder通信类
BpBinder和BBinder在Binder通信机制中属于通信层,这两个类是真正干实事的。BpBinder是客户端用来与服务交互的代理类,BpBinder本身不实现通信功能,通信功能由其它类和函数实现,但由于这些类和函数被BpBinder代理,所以客户端需要通过BpBinder来发送Binder通信数据。BBinder代表服务端,当服务端从Binder驱动中读取到数据后,由BBinder类进...原创 2020-02-02 20:51:57 · 605 阅读 · 0 评论 -
Binder native层源码分析(四):Binder驱动将数据发往sm
android源码不包括驱动代码,驱动代码需要另外下载。网上有很多下载驱动代码的方法。如果嫌麻烦可以直接在github随便找一个手机品牌的驱动代码下载。Binder驱动的注册与打开Binder被android系统注册成misc device类型的驱动,这种类型的驱动主设备号统一为10,次设备号为每种设备独有,且只需调用misc_register()就可完成注册://\drivers\andr...原创 2020-02-02 20:51:41 · 581 阅读 · 0 评论 -
Binder native层源码分析(六):sm返回查询结果
假设现在有一个客户端向sm请求MediaPlayer服务,本篇文章分析sm怎么返回服务的查询结果,即svcmgr_handler中怎么处理SVC_MGR_GET_SERVICE请求。处理SVC_MGR_GET_SERVICE请求case SVC_MGR_GET_SERVICE: case SVC_MGR_CHECK_SERVICE: //得到服务名, 这里应该是String16...原创 2020-02-02 20:51:25 · 393 阅读 · 0 评论 -
Binder native层源码分析(七):BBinder
Binder驱动部分的主要内容已经基本分析完了,现在回到native层,把之前源码分析三中未分析的部分拿出来分析一遍,注意目的是说明BBinder的作用。我把这一部分内容放在这里分析其实是有原因的,因为如果不理解Binder驱动部分的内容,那么肯定很难理解waitForResponse后面对接收到协议的处理源码分析三我们分析了waitForResponse中发送数据的部分,我们接着看waitFo...原创 2020-02-02 20:50:56 · 532 阅读 · 0 评论 -
Binder native层源码分析(二):Parcel类
Parcel是Binder通信的中的数据包,通过分析Parcel类,我们就可以知道Binder通信中究竟在传输什么数据,进而对Binder有一个更深入的理解。在上篇博文中,addService函数往Parcel data写入了以下数据。data.writeInterfaceToken(IServiceManager::getInterfaceDescriptor());data.writeS...原创 2020-02-02 20:49:54 · 941 阅读 · 0 评论 -
Binder native层源码分析
Binder是Android系统下的IPC通信机制,进程间的通信,包括系统服务的调用,都需要通过Binder来进行。看了很多讲解Binder native层运行原理的书和博客之后,我大概对native层的Binder运行过程有了一个认识。但总觉得跟着别人的文字讲解只能让我对Binder有浅层的认识,想要更加深入地理解Binder,还是得自己亲自过一遍源码。所以我写了几篇类似阅读笔记的博客来记录我看...原创 2020-02-02 20:48:06 · 359 阅读 · 0 评论 -
Binder native层源码分析(一):media_service的启动
Binder是Android系统下的IPC通信机制,进程间的通信,包括系统服务的调用,都需要通过Binder来进行。看了很多讲解Binder native层运行原理的书和博客,我大概对native层的Binder运行过程有了一个认识。但总觉得自己对Binder的理解不够深入,无法理解其中很多的实现细节,想要更加深入地理解Binder,还是得自己亲自过一遍源码,做一个总结。很多书和博客都以系统服务...原创 2020-02-02 20:38:49 · 458 阅读 · 0 评论