Android-BoundService
2015-06-03 12:22
435 查看
Android-BoundService
一 binder
内核->字符设备binder(负责进程间通信的驱动)->servicemanager->binder类->binger接口
二 实现机制
C/S结构
调用服务的方法的映射
进程指针->指向远程服务器方法的指针->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接口,客户端向它发送请求,
IBind即是Android基于linux的IPC进程间通信在进行封装进程间通信的方式
也是RPC远程通信
注
Activity也用的binder通信
C和S在一个进程中:local服务
C和S不同的进程中:remote服务
但是实现机制都一样
binder也用到serviceManager
一 binder
内核->字符设备binder(负责进程间通信的驱动)->servicemanager->binder类->binger接口
二 实现机制
C/S结构
调用服务的方法的映射
进程指针->指向远程服务器方法的指针->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接口,客户端向它发送请求,
IBind即是Android基于linux的IPC进程间通信在进行封装进程间通信的方式
也是RPC远程通信
注
Activity也用的binder通信
C和S在一个进程中:local服务
C和S不同的进程中:remote服务
但是实现机制都一样
binder也用到serviceManager
相关文章推荐
- Android常用自定义控件
- android的m、mm、mmm编译命令的使用
- Android ADB 端口占用问题解决方案
- Android中的Environment.getExternalStorageState使用
- Android Service详解
- 最新Android & iOS设计尺寸规范
- HTML5 web应用打包成android应用
- 注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式
- Android如何区别真机和模拟器
- Android 对Layout_weight属性完全解析以及使用ListView来实现表格(自定义适配器)
- Android Studio常用快捷键
- Android 调用系统的分享[完美实现同时分享图片和文字]
- 【Android笔记】Androd手机拍照或从相册选取图片作为头像
- Android整机源码如何轻松下载?清华大学Android源码镜像
- 【Android】 R.layout.main报错问题
- Android设计模式(三)--装饰模式
- 如何使Android应用程序获得root权限
- Android自定义控件(状态提示图表)
- android 替换fragment不能全屏问题.
- Android fragment+viewpager 切换Tab