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开发艺术探索读书笔记——进程间通信

1. 多进程使用场景1) 应用某些模块因为特殊需求需要运行在单独进程中。如消息推送,使消息推送进程与应用进程能单独存活,消息推送进程不会因为应用程序进程crash而受影响。 2) 为加大一个应用可使...

android笔记 AIDL 实现进程间通信

android 中通过 AIDL (Android Interface definition language) 机制 (远程服务调用)实现进程间的通信。 什么是aidl: 1. aidl...

《Android开发艺术探索》读书笔记--part2 IPC进程间通信机制

IPC:Inter-Process Communication,进程间通信或跨进程通信part2-1 线程与进程一个应用程序对应一个进程,一个进程最少由一个线程(主线程)组成,线程是CUP调度的最小单...
  • Sjim_
  • Sjim_
  • 2015-12-29 12:14
  • 340

学习笔记 Android 使用AIDL实现进程间通信

一、编写服务端代码 1、新建一个Book类,实现Parcelable package com.licheng.android.weextest; import android.os.Parcel...

Binder进程间通信机制概述(Android系统源代码情景分析学习笔记)

在Android系统中,每一个应用程序都是由Activity、Service、Broadcast Receiver和Content Provider四大组件组成的。这些组件有可能运行在同一个进程中,也...

【Android学习笔记】Android进程间通信方式Messenger

一、什么是Messenger 如果你的服务需要与其他进程进行IPC,那么除了AIDL的方式外,有一种更为简单的方式,那就是采用基于Message的Messenger方式。当你需要进行IPC时,使用 ...

Android进程间通信

  • 2013-06-21 22:36
  • 557KB
  • 下载

android aidl 不同进程间通信

  • 2014-09-17 11:09
  • 2.93MB
  • 下载

APUE读书笔记---进程间通信之POSIX共享内存区

APUE读书笔记—进程间通信之POSIX共享内存区1. 概述无亲缘关系进程间共享内存区的方法: 内存映射文件(memory-mapped file),有open函数打开,由mmap函数把得到的描述符映...

Android aidl 实现进程间通信

  • 2016-03-07 17:07
  • 3.80MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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