文章 2017-11-09 来自:开发者社区

Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析(2)

注意,这里的参数reply = 0,表示这是一个BC_TRANSACTION命令。         前面我们提到,传给驱动程序的handle值为0,即这里的tr->target.handle = 0,表示请求的目标Binder对象是Service Manager,因此有:   target_node =...

文章 2017-11-08 来自:开发者社区

浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

在前面一篇文章浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路中,介绍了Service Manager是如何成为Binder机制的守护进程的。既然作为守护进程,Service Manager的职责当然就是为Server和Client服务了。那么,Server和Client如何获得Service Manager接口,进而享受它提供的服务呢?本文将....

文章 2017-11-08 来自:开发者社区

Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析

在前面几篇文章中,我们详细介绍了Android系统进程间通信机制Binder的原理,并且深入分析了系统提供的Binder运行库和驱动程序的源代码。细心的读者会发现,这几篇文章分析的Binder接口都是基于C/C++语言来实现的,但是我们在编写应用程序都是基于Java语言的,那么,我们如何使用Java语言来使用系统的Binder机制来进行进程间通信呢?这就是本文要介绍的Android系统应用程序框....

文章 2017-11-08 来自:开发者社区

Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(1)

    在Android系统中,针对移动设备内存空间有限的特点,提供了一种在进程间共享数据的机制:匿名共享内存,它能够辅助内存管理系统来有效地管理内存,它的实现原理我们在前面已经分析过了。为了方便使用匿名共享内存机制,系统还提供了Java调用接口(MemoryFile)和C++调用接口(MemoryHeapBase、MemoryBase),Java接口在前面也已经分析...

文章 2017-11-08 来自:开发者社区

Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(4)

  2. MemoryBase         文章开始时说过,MemoryBase接口是建立在MemoryHeapBase接口的基础上的,它们都可以作为一个Binder对象来在进程间进行数据共享,它们的关系如下所示:  MemoryBase类包含了一个成员变量mHeap,它的类型的IMemoryHeap,M...

文章 2017-11-08 来自:开发者社区

Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(3)

  回到前面BpMemoryHeap类中的assertMapped函数中,如果本BpMemoryHeap对象中的mHeapID等于-1,那么就说明这个BpMemoryHeap对象中的匿名共享内存还没准备就绪,因此,需要执行一次映射匿名共享内存的操作。         在执行映射操作之作,先要看看在本进程中是否有其它映射到同一个M...

文章 2017-11-08 来自:开发者社区

Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(5)

下面我们再来看MemoryBase类在Client端的实现,同样,先看它们的类图关系:      这个图中我们可以看出,MemoryBase类在Client端的实现与MemoryHeapBase类在Client端的实现是类似的,这里只要把IMemory类换成IMemoryHeap类以及把BpMemory类换成BpMemoryHeap类就变成是MemoryHeapBas...

文章 2017-11-08 来自:开发者社区

Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(7)

         同样,我们需要为这个Client端应用程序编译一个编译脚本,在external/ashmem/client目录下,新建一个Android.mk文件,它的内容如下所示: LOCAL_PATH := $(call my-dir)      include&...

文章 2017-11-07 来自:开发者社区

Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析(3)

  注意,这里的status参数为0。从这里可以看出,binder_send_reply告诉Binder驱动程序执行BC_FREE_BUFFER和BC_REPLY命令,前者释放之前在binder_transaction分配的空间,地址为buffer_to_free,buffer_to_free这个地址是Binder驱动程序把自己在内核空间用的地址转换成用户空间地址再传给Service M...

文章 2017-11-07 来自:开发者社区

Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析

在上一篇文章中,我们分析了Android系统进程间通信机制Binder中的Server在启动过程使用Service Manager的addService接口把自己添加到Service Manager守护过程中接受管理。在这一篇文章中,我们将深入到Binder驱动程序源代码去分析Client是如何通过Service Manager的getService接口中来获得Server远程接口的。Clien....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

mPaaS 移动开发平台

mPaaS 源于蚂蚁集团金融科技,为 App 开发、测试、运营及运维提供云到端的一站式解决方案,致力于提供高效、灵活、稳定的移动研发、管理平台。 官网地址:https://www.aliyun.com/product/mobilepaas/mpaas

+关注