你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

Android开发之跨进程通信-广播跨进程实现方法(附源码)

2021/12/18 5:50:55

真的特别简单,简单概述下android的四大组件都可以跨进程。

 

Activity,广播,服务,内容提供者都可以

先看下跨进程传递数据的效果图

下面是两个APP用于模拟跨进程

再看下跨进程效果,AIDL和广播跨进程图下面是

先看广播怎么跨,特别简单

发送端:直接在activity里面或者fragment都可以发送广播即可

 //跨进程方法二 广播
        btSend2.setOnClickListener {
            val intent = Intent()
            //下面action需要与服务端APP清单文件里面的广播配置的action字段保持一致
            intent.action = "com.xiayiye5.login.token2"
            intent.putExtra("login_access_token", "拿到的token为:" + etInput.text.toString().trim())
//如果是在fragment里面发送广播需要拿到当前fragment的activity对象即可
//getActivity.sendBroadcast(intent)
            sendBroadcast(intent)
        }

再看接收端的代码:

新建一个接收数据局的广播

package com.example.app_server

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent

/**
 * 广播接收跨进程APP数据
 * @author xiayiye5
 * @date 2021/11/29 9:43
 */
class TakeTokenBroadCast : BroadcastReceiver() {
    companion object {
        const val action = "com.xiayiye5.login.token2"
    }

    override fun onReceive(context: Context?, intent: Intent?) {
        if (action == intent!!.action) {
//            val token = intent.getStringExtra("login_access_token")
//            Toast.makeText(context, token, Toast.LENGTH_LONG).show()
            //打开接收数据的activity即可,数据都在intent里面,在activity页面直接取就好了
            intent.setClass(context!!, ServerActivity::class.java)
            context.startActivity(intent)
        }
    }
}

然后在清单文件配置下广播接受者即可

<receiver android:name=".TakeTokenBroadCast">
            <intent-filter>
                <!--下面的action配置需要与客户端发送广播的action保持一致-->
                <action android:name="com.xiayiye5.login.token2" />
            </intent-filter>
        </receiver>

感谢原博主:博主直达

  如果看着比较复杂具体可以下载源码查看:源码直达