真的特别简单,简单概述下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>
感谢原博主:博主直达
如果看着比较复杂具体可以下载源码查看:源码直达