Android进程间通信

一.Linux系统进程间通信有哪些方式?

1.socket;

2.name pipe命名管道;

3.message queue消息队列;

4.singal信号量;

5.share memory共享内存;

 

二.Java系统的通信方式是什么?

1.socket;

2.name pipe;

 

三.Android系统通信方式是什么?

Binder 通信;

 

四.Binder通信的优势是什么?

高效率

 

五.Binder通信的特点是什么?

是同步,而不是异步;

 

六.Binder通信是如何实现的?

1.Binder通信是通过linux的binder driver来实现的,

2.Binder通信操作类似线程迁移(threadmigration),两个进程间IPC看起来就象是一个进程进入另一个进程执行代码然后带着执行的结果返回;

3.Binder的用户空间为每一个进程维护着一个可用的线程池,线程池用于处理到来的IPC以及执行进程本地消息,Binder通信是同步而不是异步。

 

七. Android中的 Binder通信实现要点:

1. Android中的Binder通信是基于Service与Client的工作模型的;

2. 所有需要IBinder通信的进程都必须创建一个IBinder接口;

3. 系统中有一个进程管理所有的system service:

4. Android不允许用户添加非授权的Systemservice;

5. 现在源码开放了,我们可以修改一些代码来实现添加底层system Service的目的;

6. 对用户程序来说,我们也要创建server,或者Service用于进程间通信;

7. ActivityManagerService管理JAVA应用层所有的service创建与连接(connect),disconnect;

8. 所有的Activity也是通过这个service来启动,加载的;

9. ActivityManagerService也是加载在Systems Servcie中的;

 

八.Android的 Service工作流程

1.Android虚拟机启动之前系统会先启动service Manager进程;2.service Manager打开binder驱动,并通知binder kernel驱动程序这个进程将作为System Service Manager;

3.然后该进程将进入一个循环,等待处理来自其他进程的数据。4.用户创建一个System service后,通过defaultServiceManager得到一个远程ServiceManager的接口,通过这个接口我们可以调用addService函数将System service添加到Service Manager进程中;

5.然后client可以通过getService获取到需要连接的目的Service的IBinder对象,这个IBinder是Service的BBinder在binder kernel的一个参考,

6.所以serviceIBinder 在binder kernel中不会存在相同的两个IBinder对象,每一个Client进程同样需要打开Binder驱动程序。对用户程序而言,我们获得这个对象就可以通过binderkernel访问service对象中的方法。

7.Client与Service在不同的进程中,通过这种方式实现了类似线程间的迁移的通信方式,对用户程序而言当调用Service返回的IBinder接口后,访问Service中的方法就如同调用自己的函数。

转载于:https://www.cnblogs.com/goneone/p/3490666.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最新的一些开源face alignment及评价

dlib :https://github.com/davisking/dlib/tree/v18.18 评价:速度快,可商用,有些时候不太准确 2. CLM-framework: https://github.com/TadasBaltrusaitis/CLM-framework 评价:很准确,不可商用 3. Face Detection…

1048 石子归并

1048 石子归并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量和w[i]w[i1]。问安排怎样的合并顺序&#xf…

internetreadfile读取数据长度为0_【完结】TensorFlow2.0 快速上手手册

大家好,这是专栏《TensorFlow2.0》的第五篇文章,我们对专栏《TensorFlow2.0》进行一个总结。我们知道全新的TensorFlow2.0 Alpha已经于2019年3月被发布,新版本对TensorFLow的使用方式进行了重大改进,为了满足各位AI人对TensorFlow…

Facial Landmark Detection(人脸特征点检测)

原文地址:http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375 作为计算机视觉研究员,我们很早就开始研究人脸。人脸分析领域最广为人知的就是人脸识别(face recognition).但是为了识别一幅图像中的人脸&…

cpu卡操作协议iso14443协议

http://baike.baidu.com/link?url3mef2ZMRoNuBrVLA2HpEh8xrBtzACdIi5nIDUsMyVkA8OulIXGWgswvFcTiBfh_B转载于:https://www.cnblogs.com/shuenjian901/p/3496331.html

Python 字符串的内置函数

方法描述string.capitalize()把字符串的第一个字符大写string.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串string.count(str, beg0, endlen(string))返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str …

Java中的Error和Exceptiond的异同点

Error和Exception的异同点: (1)Error类和Exception类都继承超类Java.lang.Throwable (2)Error:一般指与虚拟机相关的问题,如系统崩溃,内存溢出等。对于这类错误,仅靠程序…

python算法题_python基本算法题(一)

1、3位水仙花数计算 "3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。 例如: ABC是一个“3位水仙花数”,则:A的3次方+B的3次方+C的3次方 ABC。 使用Python,输出所有的3…

虚拟机环境下安装ESX不能安装虚拟系统解决方案

在虚拟机环境(ESX、workstation等)下安装ESX或workstation等虚拟机,在虚拟机上再安装操作系统,会提示“虚拟系统不能启动,直到你配置了外部虚拟机(vmware esx in a virtual machine requires the outer vir…

superviseddescent (SDM C++11实现)环境配置

今天试着用了一下SDM的C11实现,本来以为挺简单的,可是配置环境还是花了一些时间。为了给自己留下一些记忆,特把配置过程记录下来。 这个实现是C11的版本,是一个通用版本,里面包含了很多的功能,比如函数的最…

1008: University

台州ACM:1008: University Description 在大学里,非常多单词都是一词多义。偶尔在文章里还要用引申义。这困扰Redraiment非常长的时间。 他開始搜集那些单词的全部意义。他发现了一些规律,比如 “a”能用“e”来取代, “c”能用“f”来取代……

Android 5.1 API 22 所有sdk文件下载地址

开源中国的 IT 公司开源软件整理计划介绍 https://dl-ssl.google.com/android/repository/docs-22_r01.ziphttp://dl.google.com/android/repository/android-22_r01.ziphttps://dl-ssl.google.com/android/repository/samples-22_r05.ziphttps://dl-ssl.google.com/android/re…

python图形小游戏代码_手把手制作Python小游戏:俄罗斯方块(一)

手把手制作Python小游戏:俄罗斯方块1大家好,新手第一次写文章,请多多指教 A.准备工作: 这里我们运用的是Pygame库,因为Python没有内置,所以需要下载 如果没有pygame,可以到官网下载 pygame官网&…

关于Git使用的一些心得

2019独角兽企业重金招聘Python工程师标准>>> 本篇稍微记录下Git使用的一些心得。 对Git的使用,应该是从搭建自己的博客开始的。当时看到开源中国推荐的一篇基于码云hexo搭建自己博客的文章。所以就花了一天时间鼓捣了下博客。 顺带整理下目前能看到我写的…

Dlib机器学习库安装

昨天使用了一下dlib的人脸检测功能,效果出奇的好。下面给出dlib整个的安装过程和使用指导。 下载安装 我们可以从dlib的官网下载最新的版本,我的是dlib18.18.然后我们需要使用cmake编译dlib库和examples示例。 当然前提是你要按照好cmake和opencv。 …

struts2上传

今天在使用struts2上传的过程中无意发现,struts2上传一个文件大小为0字节的文本竟然会报错FileNotFoundException,尝试了好久也没找到答案,最后只能判断文件的大小后上传,至于文件字节为0的怎么处理就看各位了 struts2上传java源码 1 package com.jzgx.web.action;2 3 import j…

BitSet之为什么用long保存信息

BitSet内部使用long[] words来保存位信息。咋看之下并不理解原因&#xff0c;在解读set(int bitIndex)之后似乎有了一些领悟。 public void set(int bitIndex) { if (bitIndex < 0) throw new IndexOutOfBoundsException("bitIndex < 0: " bitIndex); //用来计…

ipv4地址是几位二进制数_几张思维导图,让你清楚的知道ip地址怎么回事?

网络工程中&#xff0c;ip地址是必须要了解的内容&#xff0c;今天我们用几张思维导图来给大家详细讲解IP地址。一、什么是IP地址在生活中我们使用具有上网功能的电子设备都有IP地址&#xff0c;就跟每个人都有自己的名字一样。IP地址分为IPV4 IPV6&#xff0c;我们所说的的IP地…

《关系营销2.0——社交网络时代的营销之道》一检查拼写和语法

本节书摘来异步社区《关系营销2.0——社交网络时代的营销之道》一书中的第2章&#xff0c;作者&#xff1a; 【美】Mari Smith 译者&#xff1a; 张猛 , 于宏 , 赵俐 责编&#xff1a; 陈冀康, 更多章节内容可以访问云栖社区“异步社区”公众号查看。 检查拼写和语法 关系营销2…

dlib人脸检测功能介绍

本文主要介绍三个点&#xff1a; 1. 如何单独建立一个工程&#xff0c;使用dlib的人脸检测功能。 2. 提高人脸检测率的两个方法 3. 加速人脸检测的方法 下面围绕这几个点展开叙述。 建人脸检测工程 1 . 首先我们先使用上期说的examples里的人脸检测。 我们只要将face_de…