Android Intent

Intent:
在一个Android应用中,Intent是对执行某个操作的一个抽象描述,Intent 负责提供组件之间相互调用的相关信息传递,实现调用者和被调用者之间的解耦。

Intent的属性:
Intent是对执行某个操作的一个抽象描述,其描述的内容包括,对执行动作Action的描述、对操作数据的描述、还有4种附加属性的描述。分别介绍如下:

  Action ,
  对执行动作的描述,是个字符串,是对所将执行的动作的描述,在Intent类中定义了一些字符串常量作为标准动作,譬如:
    public static final String ACTION_DIAL = "android.intent.action.DIAL"
    public static final String ACTION_SENDTO = "android.intent.action.SENDTO";
  我们还可以自定义Action,并定义相应的Activity来处理我们自定义的行为。

  data ,
  是对执行动作所要操作的数据的描述,Android中采用URI来表示数据

  catagory 类别,
  是被请求组件的额外描述信息,Intent类中也定义了一组字符串常量表示Intent不同的类别。完整的列表可以看API文档中Intent类的相应部分。
    public static final String CATEGORY_LAUNCHER = "android.intent.category.LAUNCHER";
    public static final String CATEGORY_PREFERENCE = "android.intent.category.PREFERENCE";

  extra 附加信息,
  除了data之外,还可以通过extra附加信息,extra属性使用Bundle类型进行数据传递,我们可以把Bundle当做HashMap来理解,
    附加数据可以通过 intent.putExtras() 和 intent.getExtras() 进行传入和读取。
    就像这样,获取附加信息: Bundle bundle = intent.getExtras();
    添加附加信息: Bundle bundle = new Bundle(); intent.putExtras(bundle);

  component 组件,
  显式指定Intent的目标组件的名称。如果指定了component属性,系统会直接使用它指定的组件,而非匹配查找。

  type 数据类型,
  显式指定Intent的数据类型,一般Intent的数据类型都能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型和不再进行推导。

解析Intent

  Intent是一种在不同组件之间传递的请求信息,是应用程序发出的请求和意图,作为一个完整的消息传递机制,Intent不仅需要发送端,还需要接收端。
  当指定了component属性后,就是显式的指定了目标组件,也就是接收端。如果没有明确指定目标组件,那么Android系统会使用 Intent 里的(action,data,category)三个属性来寻找和匹配接收端。

IntentFilter

  应用程序组件可以使用IntentFilter来向系统说明自己可以响应和处理哪些Intent请求。组件一般通过AndroidManifest.xml文件的<Intent-Filter>描述。
    <activity android:name=”.MainTinyPhone” android:label=”@string/app_name”>
      <intent-filter>
        <action android:name=”android.intent.action.MAIN” />
        <category android:name=”android.intent.category.LAUNCHER” />
      </intent-filter>
    </activity>

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。