浅谈跨进程隐私启动Activity

本文深入解析了Android中隐式Intent的使用方法与匹配规则。通过具体案例,详细介绍了如何在AndroidManifest.xml中设置<intent-filter>,包括<action>、<category>的配置,以及它们在跨进程启动Activity时的作用。此外,还阐述了系统默认添加android.intent.category.DEFAULT的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

startActivity()的方式有显示和隐式方式,今天记录一下隐式启动。

一:代码案例:

被启动端Activity中:

AndroidManifest.xml
<activity
    android:name=".ui.activity.ActionActivity"
    >
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT"/>
        <action android:name="dh.android.action.TEST_ACTIVITY"/>
        <category android:name="dh.android.intent.category_TEST"/>
        <category android:name="android.intent.category.BROWSABLE"/>
    </intent-filter>
</activity>

其中<category android:name="android.intent.category.DEFAULT"/>这个过滤器是固定必须添加的,系统要求。其余可自定义,原因是因素启动Activity时系统回默认为intent添加 addCategory("android.intent.category.DEFAULT"),虽然写程序时未手动写intnet.addCategory("android.intent.category.DEFAULT"); 但运行时系统会为其默认添加上,如果被启动方Activity注册时不添加<category android:name="android.intent.category.DEFAULT"/>程序会crash。

启动端Activity:

Intent intent = new Intent();
intent.setAction("dh.android.action.TEST_ACTIVITY");
intent.addCategory("dh.android.intent.category_TEST");
intent.addCategory("android.intent.category.BROWSABLE");
startActivity(intent);

二:匹配规则:

1.Action的匹配规则,Intent中必现携带有Action,intente中携带几个action,被启动的Activity注册时就要添加几个action.

2.Category的匹配规则,Intent中可以有携带category,也可以没有携带category,由于系统会默认为隐式Intent携带上android.intent.category.DEFAULT,所以注册端至少要添加这个category。

该方式即可用在同一程序之间,也可用在不同程序之间,即可跨进程启动,跨进程启动场景有个有趣的特点,任务栈中只有一个进程,即当前获取焦点的Activity,如果当前Activity销毁,任务栈中会加载启动方的进程,使启动方的Activity获取焦点。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值