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
Android-BoundService的更多相关文章
- Android进程间的通信之AIDL
Android服务被设计用来执行很多操作,比如说,可以执行运行时间长的耗时操作,比较耗时的网络操作,甚至是在一个单独进程中的永不会结束的操作.实现这些操作之一是通过Android接口定义语言(AIDL ...
- 【Android 界面效果34】Android里Service的bindService()和startService()混合使用深入分析
.先讲讲怎么使用bindService()绑定服务 应用组件(客户端)可以调用bindService()绑定到一个service.Android系统之后调用service的onBind()方法,它返回 ...
- Android ServiceConnection
绑定到一个Service 应用组件(客户端)可以调用bindService()绑定到一个service.Android系统之后调用service的onBind()方法,它返回一个用来与service交 ...
- Android开发之IPC进程间通信-AIDL介绍及实例解析
一.IPC进程间通信 IPC是进程间通信方法的统称,Linux IPC包括以下方法,Android的进程间通信主要采用是哪些方法呢? 1. 管道(Pipe)及有名管道(named pipe):管道可用 ...
- Android学习总结——Service组件
从Service的启动方式上,可以将Service分为Started Service和Bound Service.在使用Service时,要想系统能够找到此自定义Service,无论哪种类型,都需要在 ...
- Android探索之旅 | AIDL原理和实例讲解
轉載自http://www.jianshu.com/p/ef86f682a8f9 -- 作者 谢恩铭 转载请注明出处 前言 为使应用程序之间能够彼此通信,Android提供了IPC (Inter Pr ...
- 【Android学习】Service&Boradcast初步
Service初步 掌握Service概念 掌握Service分类 Service开发能力具备 了解Service和intentService类的区别 重点难点 StartService和BoundS ...
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 配置android sdk 环境
1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/
- Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记
以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...
随机推荐
- JavaSE中日期处理
一.java中日期类之间的关系: 其中: 1):java.sql.Date.java.sql.Time和java.sql.Timestamp这三个类是专门和数据库打交道的,它们都是java.util. ...
- DOCTYPE 与浏览器模式分析
DOCTYPE 的诞生 DOCTYPE,或者称为 Document Type Declaration(文档类型声明,缩写 DTD).通常情况下,DOCTYPE 位于一个 HTML 文档的最前面的位置, ...
- c# 遇到的问题,求解?
c# cannot evaluate expression because the code of the current method is optimized.
- PHP——文本编辑器
简单的代码演示 详细文件在文件目录里 <!doctype html> <html> <head> <meta charset="utf-8" ...
- hdu6055 Regular polygon 脑洞几何 给定n个坐标(x,y)。x,y都是整数,求有多少个正多边形。因为点都是整数点,所以只可能是正四边形。
/** 题目:hdu6055 Regular polygon 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6055 题意:给定n个坐标(x,y).x,y都 ...
- 【iOS与EV3混合机器人编程系列之四】iOS_WiFi_EV3_Library 剖析之中的一个:WiFi UDP和TCP
在上一篇文章中.我们通过编写EV3 Port Viewer项目实现了iOS监測EV3的实时端口数据. 程序最核心的部分就是我们的开源码库iOS_WiFi_EV3_Library. 那么,在本文中,我们 ...
- C++ Scoket的升级版(多态的运用)
//Socket报文发送c++升级版 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #in ...
- linux 知识点拾遗
文件名称 在 Linux 底下,每个档案或文件夹的文件名称最长能够到达 255 的字符,加上完整路径时,最长可达 4096 个字符; 因为 Linux 在文字接口下的一些指令操作关系,一般来说,您在设 ...
- webpack文档翻译
https://segmentfault.com/a/1190000007568507
- js高级面试题
<script> //1. var foo = { bar: function () { return this.baz; }, baz: 1 }; (function () { retu ...