Android 笔记 进程间通信

原创 2017年05月25日 01:36:16

进程间通信

同一个apk文件安装的app下的所有部件(大概)都是同一个进程的。所以这里讲的进程间通信,指的是不同app之间的通信。

实际上,我觉得,如果不同的app通信,用intent,broadcastReceiver就可以了,不过既然有通信的方法,研究一下也无妨。

网络上的例子,包括官网的例子里面,会用到Service部件。这个部件有一点要指出的是:
Service和同app的其他部件是在同一个进程下的,甚至service都没有单独的线程,是和绑定它或者startService()调用者在同一进程的。所以,如果需要进行耗时任务,需要单独的开一个线程在里面。
IntentService类扩展了基础的Service类,并且实现了单独的线程,可以用来执行单次的后台任务,比如下载什么的。

这里说的跨进程,是调用其它app的service,并且互相通信。一般情况下,使用intent只能是开启其他的activity,或者发一个广播,让目标收到。跨进程通信(我更愿意说成app间通信)是不需要频繁的发intent,就可以让两个部件通信。

在service的官方指南中提到过,启动一个service可以用startService()或者bindService(),各自有不同的表现。bindService()叫做 创建绑定服务。
在创建绑定服务的时候,可以用到三个方法,
一,使用Binder类。实现同app的绑定服务。也就是同进程的。
二,使用Messenger类,可以实现跨APP的通信
三,使用AIDL语言创建通信。实际上Messenger类的内核也用到了AIDL语言,相当于是一种便利类。

使用Binder类的时候,可以直接在同app的其他组件里,直接获得service的实例,直接调用里面的方法。

而使用messenger类的时候,因为是不同的app(当然,同app也可以),所以不能直接获得service实例。而是像普通的intent功能一样,通过隐式的intent来启动其他app的组件,然后,从里面创建一个针对目标service的messenger,通信的时候就往这个messenger里面发信息。(因为非同进程,所以不能直接调用里面的方法)

基本就是这样。没什么特别难懂的东西。使用Messenger就足够了。

绑定服务
Android 基于Message的进程间通信 Messenger完全解析
Android aidl Binder框架浅析
服务
Android 接口定义语言 (AIDL)

版权声明:转载需标注出处和作者

Android开发艺术探索读书笔记(二)-跨进程通信

在Androi系统中,为了对内存有一个统一的优化管理,通常对每个进程所能使用的最大内存做出限制。而在开发大型应用程序或者游戏的时候,为了获得更多的内存来支持程序的运行。往往需要在应用中开启多个线程来取...
  • dengminghli
  • dengminghli
  • 2017年02月05日 22:04
  • 746

Linux设计与实现学习笔记

从第三章开始吧,前面都是Overview的介绍: 第三章
  • hibianfeng
  • hibianfeng
  • 2014年10月20日 17:09
  • 253

Android笔记汇总

1,android 关闭进程 若是只有一个单独的Activity的工程,例如Activity A,调用android.app.Activity.finish()的话,并不会关闭该工程,只是使...
  • jiangxinyu
  • jiangxinyu
  • 2013年02月05日 16:50
  • 7613

逆向工程核心原理读书笔记-API钩取之隐藏进程(一)

我们通过一个示例来练习在ProcExp.exe和taskmgr.exe中隐藏进程。钩取前后的原理图如下所示。 下面我们先测试一下代码。关于代码的使用很简单,就不再多说了。 我们来分...
  • liujiayu2
  • liujiayu2
  • 2017年06月09日 13:32
  • 337

Android仿印象笔记的自定义菜单控件

点击印象笔记添加笔记菜单按钮,便会弹出一系列的按钮用于添加不同的笔记。于是自己试着仿照印象笔记的菜单按钮,写出一个自定义的菜单控件。...
  • ddxxll2008
  • ddxxll2008
  • 2015年11月24日 10:20
  • 1206

深入浅出nodejs学习笔记--第九章 玩转进程管理

深入浅出nodejs学习笔记--第九章 玩转进程管理 简单总结了node基于单线程实现多进程的历史,以及一些方案...
  • u013707249
  • u013707249
  • 2017年04月20日 10:05
  • 507

第一天 黑马Android笔记

#1.1G-4G g:generation 代 3g:第三代移动通信技术 1g: 大哥大 特点:安全性差,容易受干扰,通话不稳定,不能发短信 2g:小灵通等功能机 特点:通话质量稳定,可以发短信彩信...
  • zhugushen
  • zhugushen
  • 2017年01月12日 11:43
  • 336

Android中的五大进程

一、前台进程(Foreground process):   用户当前工作所需要的。一个进程如果满足下列任何条件被认为是前台进程:   正运行着一个正在与用户交互的活动(Activity对象的onR...
  • a411540365a
  • a411540365a
  • 2016年09月22日 17:26
  • 420

Android中的进程简介(可见进程,前台进程,后台进程等)

我最近在看一些Android进程方面的知识,发现自己在这方面有些欠缺。所以在查阅完资料后特意在此做一下笔记,巩固这方面的知识。 Android中有多种进程,我列出下面几种:前台进程,可见进程,服务进...
  • y505772146
  • y505772146
  • 2016年08月19日 15:10
  • 3738

Nginx学习笔记(十七):master进程的循环工作

前言 在ngx_master_process_cycle()中,master进程设置屏蔽信号,通过管理worker子进程实现重启、平滑升级、更换日志、配置文件实时生效等功能。它的实现依旧使用的是信号控...
  • fzy0201
  • fzy0201
  • 2014年03月23日 13:28
  • 1271
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 笔记 进程间通信
举报原因:
原因补充:

(最多只允许输入30个字)