Activity启动方式的总结(4)-Activity隐式启动时候IntentFilter的匹配规则

Activity隐式启动时候IntentFilter的匹配规则

显式 Intent

即在构造Intent对象时就指定接收者,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的,如下:

Intent intent = new Intent(MainActivit.this, NewActivity.class);
startActivity(intent );  
隐式 Intent

即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,有利于降低发送者和接收者之间的耦合,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间,如下:

Intent intent = new Intent();
intent.setAction("com.wooyun.test");
startActivity(intent);

Intent Filter匹配规则

action 和 data 都是写的能和filter匹配一个即可

category 只要写的 都要能在filter中找到

Intent中category可以没有category,
因为Intent隐式启动的时候默认会追加一个android.intent.category.DEFAULT,
所以这也就要求intent-filiter中必须有android.intent.category.DEFAULT

至于 category android:name=”android.intent.category.LAUNCHE”

<intent-filter>
    <action android:name="android.intent.action.MAIN" /> 决定应用程序最先启动的Activity

    <category android:name="android.intent.category.LAUNCHER" />决定应用程序是否显示在程序列表里
</intent-filter>

这二者共同出现,标明该Activity是一个入口Activity,并且会出现在系统应用列表中,二者缺一不可。

intent-filter匹配优先级

首先查看Intent的过滤器(intent-filter),按照以下优先关系查找:action->data->category

参考:http://blog.csdn.net/eyishion/article/details/51113094
http://blog.csdn.net/mynameishuangshuai/article/details/51673273

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值