Android Intent 意图

|:---| |startActivity(Intent)
startActivityForResult(Intent)| 启动一个 Activity |startService(Intent)
bindService(Intent) | 启动一个 Service |sendBroadcast()| 发送广播到指定 BroadcastReceiver

Intent 的七个属性

属性 说明
componentName 组件名称
action 动作
category 类别
data 数据
extras 额外信息
flags 标记
  1. componentName

    目标组件的名称,由组件所在的应用程序配置文件中设置的包名+组件的全限定类名组成,这是显式的 Intent,能够激发的组件只有一个

    setClass() , setClassName()setComponent() 方法设置

  2. Action 动作

    字符串,代表 Intent 要完成的一个抽象 “动作”,比如发信息的权限,而具体由哪个组件来完成,Intent 并不负责

  3. category 类别

    字符串, 属性 category 用于为 action 属性提供额外的附加类别信息,两者通常一起使用

    一个 Intent 对象只能设置一个 Action ,但可以有多个 category

  4. data 数据 type MIME 类型

    data 属性通常用于给 Action 属性提供操作的数据,可以是一个 URI 对象,URI 的格式形如 scheme://host:port/path

    type 属性通常用于说明 data 属性所指定的 URI 对应的 MIME 类型,比如能够显示图片数据的组件不应该用来播放音频,可以是自定义 MIME 类型,只要格式符合 abc/xyz

  5. extras 额外信息

    通常用于多个 Action 之间的数据交换

    extra 属性是一个 Bundle 对象,通过键值进行数据存储

  6. flags 标记

    不同来源的标记,经常用于标记 Android 如何启动 Activity 以及以后如何对待

    flags 常量都定义在 Intent 类中,比如 FLAG_ACTIVITY_SINGLE_TOP 相当于 Activity 加载模式中的 singleTop 模式

显式 Intent 与隐式 Intent

既然 Intent 能打开我们想要的东西,那么打开的时候就有区别了,比如指定要打开的哪个,直接打开就好,还有就是打开一组,就会弹出一个列表让我们选择打开哪个了

  • 显式Intent

    通过组件名指定启动的目标组件,比如

    startActivity(new Intent(A.this,B.class));
    

    每次启动的组件只有一个

  • 隐式Intent

    不指定组件名,而指定 Intent 的 action, datacategory

    当我们启动组件时,会去匹配 AndroidManifest.xml 相关组件的 Intent-filter,逐一匹配出满足属性的组件

    当不止一个满足时,会弹出一个让我们选择启动哪个的对话框

参考文档

  1. Android Intent 官方 API

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.