前言
我们都知道,启动Activity有两种方式,即隐式启动和显式启动。从优先级来说,显式启动要优先于隐式启动。隐式启动的优点是使用上的灵活性。因此,掌握隐式启动中IntentFilter的匹配规则就至关重要了。
对一个Activity而言,可以在AndroidManifest文件中指定多个IntentFilter,Intent只要能够匹配其中任意一个就算匹配成功。在一个IntentFilter中,可以有多个action、category和data。所有的action组成action类别。同理,所有的category和data分别组成category类别和data类别。Intent需要和action类别、category类别和data类别全部匹配成功,才算是和这个IntentFilter匹配成功。针对不同的类别,有着不同的匹配规则,具体细节见下文。
action的匹配规则
直观来说,action是一个字符串。Android系统提供了一些预定义的action,它们都有着自己的含义,我们可以直接使用。当然,我们也可以定义自己的action,以便满足我们自己的业务需求。在一个IntentFilter中,可以有多个action。Intent只要能和其中任意一个 action匹配就算是匹配成功。否则,匹配失败。
category的匹配规则
category也是一个字符串,Android系统同样为我们提供了一些预定义的category。当然,我们也可以定义自己的category。category的匹配规则和action有所不同。一个Int