Android-BoundService

一 binder

内核->字符设备binder(负责进程间通信的驱动)->servicemanager->binder类->binger接口





二 实现机制

C/S结构

调用服务的方法的映射

进程指针->指向远程server方法的指针->memory 

装程序stub:指向远端指针的指针(句柄)。这个句柄发送请求给远端的句柄(通信的机制可能是binder也可能是其它的IPC)

要求远端的句柄调用某些方法,然后远端返回给本地,

本地通过接收这个句柄,得到远程的某些实例方法,能够操作这些方法。但并非直接操作远程的内存空间





三 BoundService编写步骤

1 继承Service或者IntentService实现某些服务类

2 在manifest文件里注冊服务类

3 绑定服务bindService

4 取消绑定unbindService





四 常见问题

1 onBind和onServiceConnected两个方法谁先运行:

onBind先运行





2 onUnbind和onServiceConnected两个方法谁先运行:

onServiceConnected先运行





3 理解binder的作用:

依赖于ServiceManager,它提供IBind接口。client向它发送请求,

IBind即是Android基于linux的IPC进程间通信在进行封装进程间通信的方式

也是RPC远程通信







Activity也用的binder通信

C和S在一个进程中:local服务

C和S不同的进程中:remote服务

可是实现机制都一样

binder也用到serviceManager

最新文章

  1. 锋利的JQuery 学习笔记
  2. 转: KindEditor 图片空间文件增加删除文件、文件夹功能(ASP语言环境)
  3. webService发布和调用--Axis2
  4. Eureka的故事,专注能让你看到别人看不到的事情
  5. poj----1330Nearest Common Ancestors(简单LCA)
  6. Objective-C中NSValue的使用
  7. “PEDIY CrackMe 2007” 下载地址
  8. iOS:Git分布式版本控制器系统
  9. CentOs install oracle instant client
  10. 你们都是怎么阅读android系统源码的,用什么工具?
  11. SpringMVC4+thymeleaf3的一个简单实例(篇一:基本环境)
  12. jz2440烧写开发板uboot,内核和文件系统等的相关命令
  13. NSIS:延时启动软件的几个方法及探索
  14. WebBrowser一点心得,如果在Javascript和Winform代码之间实现双向通信
  15. Apache保持连接
  16. C++对象模型之lambda表达式
  17. Spring中@Autowired与@Resource的区别
  18. 配置环境变量及jdk
  19. 【持续集成】GIT+jenkins+sonar——GIT
  20. Skype 服务器客户端策略参数优化

热门文章

  1. 机动车驾驶员计时培训系统符合性检测平台TCP服务器设计和开发
  2. jquery远程引用地址大全
  3. 01 SQL核心语句
  4. yum 安装出错--"Couldn't resolve host 'mirrors.aliyun.com'"
  5. html 调用ActiveX
  6. datagrid带查询带分页
  7. java小数位-DecimalFormat(转)
  8. 获取WPF的DataGrid控件中,是否存在没有通过错误验证的Cell
  9. Django admin 的 9 个技巧
  10. kafka 并发数配置过程中踩到的坑 InstanceAlreadyExistsException