浅谈跨进程隐私启动Activity

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

一:代码案例:

被启动端Activity中:

AndroidManifest.xml

    
        
        
        
        
    

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

 

 

 

你可能感兴趣的:(隐式启动Activity,跨进程启动Activity,intent跨进程通信,android,studio,android)