使用Intent进程间通信

前言

Android 进程间通信的方式之一就是使用Intent进行,本文详细介绍如何使用Intent的方式进行进程间通信

效果图

代码

发送端

1
2
3
4
5
6
7
8
9
val intent = Intent()
//设置需要传递的数据类型
intent.putExtra("name", "hello 使用Intent进程间通信 index:$index")
//第一个参数:appid 注意不是包名
//第二个参数:启动的Activity详细路径
intent.component =
ComponentName("com.allens.intent", "com.starot.lib_intent.SecondIntentAct")
//跳转即可
startActivity(intent)

接受端

1
2
//Intent 方式获取
val name = intent.getStringExtra("name")

优缺点

可以看出,这种方式和普通的跳转Activity几乎一样,使用起来非常方便,无需其他的配置,就可以完整简单的数据传输。缺点也很明显,只能传输序列化的对象,或者简单的数据类型。对于这种进程间通信的方式,适用的场景,例如分享链接等一些简单的事情

补充

操作系统中需要有设置的Activity和进程

如果找不到设置的Activity,程序会出现错误。

1
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.allens.intent/com.starot.lib_intent.SecondIntentAct}; have you declared this activity in your AndroidManifest.xml?

任务栈关系

进程A通过Intent启动了进程B,B会被放置在A的栈上,而不会重新起一个任务栈

当点击跳转以后,会发现启动了进程B被拉起

但是打开系统的任务栏,会发现,只有一个任务栈,不会出现两个任务栈,