Android 跨进程通信(一)

原创 2016年09月26日 15:47:42

Android 跨进程通信

Android 本身提供一四种方式进行实现跨进程通信,他们也分别是Android的四大组件.分别是:Activity,Content Provider,Broadcast和Service.

Activity实现跨进程通信

以Activity方式实现跨进程通信,实现方式是最为简单的.比如应用A需要应用B提供的数据,就使用Intent调用应用B的Activty,再使用onActivityResult方式获取数据.

虽然说是最简单.但在实现是还是有很多种方式的.就像App内部跳转一样.可以使用action,uri,及类名方式,这里就先来一个最常简单Class方式,其它方式与应用内部调用差别不大,这里就不详细叙述了.

-这里是InovkeA

    private void classInvoke() {
        Intent intent = new Intent();
        //需请求的App包名,Activty名,Activity需要写全名
        intent.setClassName("com.peng.study.appinvokeb", "com.peng.study.appinvokeb.InvokeBActivity");
        startActivityForResult(intent, CLASS_INVOKE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == CLASS_INVOKE && resultCode == Activity.RESULT_OK) {
            LogUtil.debug(data.getStringExtra("data"));
        }
    }

数据接收处理与传统方式无区别.这里就先不写了.

Broadcast

Broadcast,即我们常说的广播.主要用于数据的单项传输,接收方再处理完数据后,无法直接将结果回送给数据的发送方,只能再次通过广播的方式回送数据.

广播的实现还是比较常用的,这里只例举一种比实简单的实现

广播发送方:

private void broadcastInvoke() {
        Intent intent = new Intent();
        intent.putExtra("data", "this is data");
        //只有和这个action一样的广播接收者可以收到广播
        intent.setAction("com.study.appinovkeb.data");
        sendBroadcast(intent);
        LogUtil.debug("send broadcast is success");
    }

广播接收方
在AndroidManifest.xml中注册广播接收器

 <receiver android:name=".InvokeHandler">
            <intent-filter>
                <action android:name="com.study.appinovkeb.data"></action>
            </intent-filter>
   </receiver>

广播处理


public class InvokeHandler extends BroadcastReceiver {
    public InvokeHandler() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        LogUtil.debug("on receive is run");
        String data = intent.getStringExtra("data");
        LogUtil.debug("data is " + data);
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 中的Binder跨进程通信机制与AIDL

如果对进程、线程概念还很懵懂的同学可以看一下之前发表的一篇博客,里面是基础概念: IPC进程间通信/跨进程通信 http://blog.csdn.net/github_33304260/artic...
  • github_33304260
  • github_33304260
  • 2016年11月15日 18:48
  • 949

android之AIDL跨进程通信详解

背景一直以来都只是听说AIDL是跨进程的,但都由于项目中也没涉及到,所以也从来都没彻底去了解过,最近空闲下来去了解插件化开发原理,看着看着正好涉及到Ibinder以及android用到的AIDL,于是...
  • zhongwn
  • zhongwn
  • 2017年02月23日 18:18
  • 1167

android跨进程通信(IPC):使用AIDL

AIDL的作用     AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(in...
  • singwhatiwanna
  • singwhatiwanna
  • 2013年11月30日 23:20
  • 54709

Android跨进程通信的4种方式

由于android系统中应用程序之间不能共享内存。因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些。在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于andro...
  • u011522720
  • u011522720
  • 2013年12月25日 08:23
  • 2567

带你一起剖析Android AIDL跨进程通信的实现原理

今日科技快讯 从8月份发布混改方案开始,中国联通作为首批混改试点中惟一一家集团层面整体混改的央企,也是全球首例“电信运营商+互联网巨头”战略融合先行试水者,一直倍受关注。而就在昨日,有业...
  • c10WTiybQ1Ye3
  • c10WTiybQ1Ye3
  • 2017年10月27日 00:00
  • 174

android跨进程通信(一)

1.Activity声明周期(详尽含底层)Activity A 和 Activity B,A 中存在按钮点击跳转 B, 创建A onCreate(A) -> onStart(A) -> onResu...
  • zhu_1893
  • zhu_1893
  • 2017年03月08日 09:33
  • 72

Android使用AIDL实现跨进程通讯(IPC)

前言:在还没有做任何一件事情之前,千万不要觉得这件事情很难,因为还没有开始做内心就已经对这件事情产生了恐惧,这将会阻止你的进步,也许当你动手开始做了这件事后发现其实并不是很难。一、 AIDL概述含义:...
  • ydxlt
  • ydxlt
  • 2016年03月08日 21:45
  • 4570

Android跨进程通信一 Messenger

实现客户端与服务端之间的交互 说明:          Messenger是信使的意思,从它的名字就可以了解到它充当着信差的角色。Android通过它实现跨进程通信,主要有客户端信使与服务端信...
  • u010952965
  • u010952965
  • 2016年07月19日 15:15
  • 144

Android跨进程通信一 Messenger

实现客户端与服务端之间的交互 说明:         Messenger是信使的意思,从它的名字就可以了解到它充当着信差的角色。Android通过它实现跨进程通信,主要有客户端...
  • WiseClown
  • WiseClown
  • 2016年05月31日 16:50
  • 231

从AIDL看Android跨进程通信

AIDL是Android实现IPC的一种重要的方式,理解它的原理对理解Android进程间通信有很大的帮助。AIDL的定义,已经有很多介绍的文章了,这里就不做详解了。我们直接从实例入手来分析AIDL实...
  • chenkai19920410
  • chenkai19920410
  • 2016年07月23日 17:31
  • 934
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 跨进程通信(一)
举报原因:
原因补充:

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