Serializable和Parcelable接口可以完成对象的序列化过程,当我们需要通过Intent和Binder传输数据时就需要使用者两种序列化方式。还有,我们需要对象持久化到存储设备或者通过网络传输给其他客户端,这个使用也需要使用Serializale来完成对象的序列化。在Android应用开发中,这两种方式都很常见,但两者方式并不相同。1.Serializable接口Serializable...
分类:
移动开发 时间:
2016-05-12 23:31:03
阅读次数:
454
10.1 Binder与SystemService
在我们编写APP程序的时候, 经常会是用getSystemService( String serviceName ) 这个方法,来获取一个系统的服务对象。我们查看源码:
frameworks/base/core/java/android/app下ContextImpl.java ,可以看到SystemService可以通过在...
分类:
其他好文 时间:
2016-05-12 20:28:59
阅读次数:
194
我们从三个方面来对AIDL进行了解:
1)介绍
2)定义
3)实例
一 介绍
AIDI(Android接口定义语言),它是Android中用来解决进程间通信的一个桥梁,它的内部实现是binder,是IPC机制的一种轻量级的实现,在Android中提供了自动创建stub的工具。
二 定义
AIDL从它的名字就可以知道,它是一个接口类型的文件,但是它与java中定义的接口...
分类:
其他好文 时间:
2016-05-12 20:22:29
阅读次数:
182
不管是客户端还是服务端,头部都要先调用
sp sm = defaultServiceManager();
defaultServiceManager()都干了什么,它返回的是什么实例呢?
该函数定义在frameworks/native/libs/binder/IserviceManager.cpp:33
sp defaultServiceManager()
{
if...
分类:
其他好文 时间:
2016-05-12 19:10:48
阅读次数:
217
1、来自知乎的网友总结的基础原文:http://diycode.cc/topics/72
ServiceManager、ActivityManager、packageManager 、*****Manager 都弄懂了?Binder 也搞清楚了?IPC 也弄明白了?FrameWork 层的每个类都折腾了?Hook 会玩了?各种 SystemService 也知道怎么运行的了?View 的渲染你明白...
分类:
移动开发 时间:
2016-05-12 18:43:46
阅读次数:
175
有了《ServiceManager如何响应checkService请求》的探索,研究addService就轻车熟路了,中间过程不再多说,仅把关键节点列出: frameworks/native/cmds/servicemanager/service_manager.c:347 frameworks/n ...
分类:
其他好文 时间:
2016-05-09 01:26:56
阅读次数:
257
前文中曾经遇到过Parcel,从命名上知道他负责数据打包。在checkService的请求/响应体系中,Parcel只打包了基本数据类型,如Int32、String16……后面还要用于打包抽象数据类型flat_binder_object,这会稍微复杂一些,因此有必要拿出来单独研究。我们从Parcel ...
分类:
其他好文 时间:
2016-05-09 00:15:24
阅读次数:
375
在checkService的调查中我们知道客户端向ServiceManager请求服务名,ServiceManager根据服务名遍历本地链表,找到匹配的handle返回给客户端。这个handle显然是由服务端注册的,这个handle究竟是什么?要先搞清楚这个问题,必须研究服务端和ServiceMan ...
分类:
其他好文 时间:
2016-05-09 00:14:56
阅读次数:
381
这要从frameworks/native/cmds/servicemanager/service_manager.c:347的main函数说起,该文件编译后生成servicemanager。 接下来遇到se_xxx相关的数据结构和函数,未来我们还会遇到。他们是Android系统提供的安全机制,负责管 ...
分类:
其他好文 时间:
2016-05-07 16:23:16
阅读次数:
266
起点从TestClient.cpp的main函数发起: 前文已经分析过sm是new BpServiceManager(new BpBinder(0)),于是sm->getService(…)的行为应该找BpServiceManager::getService(…),frameworks/native ...
分类:
其他好文 时间:
2016-05-07 16:21:33
阅读次数:
241