zoukankan      html  css  js  c++  java
  • 描述一下 Intent 和 IntentFilter?

    Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消
    息的内容,这好比一封 Email,其中不仅应该包含收件地址,还可以包含具体的内容。对于一个 Intent 对象,消息
    “目的地”是必须的,而内容则是可选项。
    通过 Intent 可以实现各种系统组件的调用与激活.
    IntentFilter: 可以理解为邮局或者是一个信笺的分拣系统…
    这个分拣系统通过 3 个参数来识别
    Action: 动作 view
    Data: 数据 uri uri
    Category : 而外的附加信息
    Action 匹配
    Action 是一个用户定义的字符串,用于描述一个 Android 应用程序组件,一个 IntentFilter 可以包含多个
    Action。在 AndroidManifest.xml 的 Activity 定义时可以在其 <intent-filter >节点指定一个 Action 列表用于标
    示 Activity 所能接受的“动作”,例如:

    intent-filter >
    <action android:name="android.intent.action.MAIN" />
    <action android:name="cn.loaderman.action" />
    ……
    </intent-filter>
    

     如果我们在启动一个 Activity 时使用这样的 Intent 对象:

    Intent intent =new Intent();
    intent.setAction("com.loaderman.action")
    

     那么所有的 Action 列表中包含了“cn.itheima”的 Activity 都将会匹配成功。
    Android 预定义了一系列的 Action 分别表示特定的系统动作。这些 Action 通过常量的方式定义在
    android.content. Intent 中,以“ACTION_”开头。我们可以在 Android 提供的文档中找到它们的详细说明。
    URI 数据匹配
    一个 Intent 可以通过 URI 携带外部数据给目标组件。在 <intent-filter >节点中,通过 <data/>节点匹配外部
    数据。
    mimeType 属性指定携带外部数据的数据类型,scheme 指定协议,host、port、path 指定数据的位置、端口、
    和路径。如下:

    <data android:mimeType="mimeType" android:scheme="scheme"
    android:host="host" android:port="port" android:path="path"/>
    

     电话的 uri tel: 12345
    http://www.baidu.com
    自己定义的 uri loaderman://cn.loaderman/person/10
    如果在 Intent Filter 中指定了这些属性,那么只有所有的属性都匹配成功时 URI 数据匹配才会成功。
    Category 类别匹配
    <intent-filter >节点中可以为组件定义一个 Category 类别列表,当 Intent 中包含这个列表的所有项目时
    Category 类别匹配才会成功。

     

  • 相关阅读:
    OCP-052考试题库汇总(35)-CUUG内部解答版
    OCP-052考试题库汇总(34)-CUUG内部解答版
    018 ThreadLocal实现线程安全
    017 无锁与CAS
    016 原子类
    015 可见性问题与volatile
    014 锁重入
    013 synchronized的优化
    012 内置锁和synchronized
    011 线程安全性问题
  • 原文地址:https://www.cnblogs.com/loaderman/p/6525491.html
Copyright © 2011-2022 走看看