Android 跨进程通信(一)

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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a13069730106

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值