Intent简介

Intent的作用有三个:

  • 启动Activity
  • 启动服务(请使用显示intent)
  • 传递广播

系统组件都是通过Intent来传递信息,大大降低了耦合性。

1、 Intent的构成

  • 组件名称:setClass()、setComponment()、intent的构造函数(传入了要启动的类名)
  • action(==必选==):要执行的操作的字符串

    ACTION_VIEW:启动可以展示信息的某项ACtivity(图库、地图)

    ACTION_SEND:“共享”操作(电邮、社交共享)

  • data:待操作的数据的引用,由数据协议、数据URI、MIME构成

    只设置URI,调用 setData(),只设置 MIME 类型,调用 setType()。若要同时设置两者,必须调用setDataAndType()

    < scheme>://< host>:< port>/< path>

    content://com.example.project:200/folder/subfolder/etc

  • category:被启动的组件的附加信息

    CATEGORY_BROWSABLE:
    目标 Activity 允许本身通过 Web浏览器启动,以显示链接引用的数据,如图像或电子邮件。

    CATEGORY_LAUNCHER:
    该 Activity 是任务的初始 Activity,在系统的应用启动器中列出。

以上这些属性就可以定位要启动的应用组件

  • extra:携带额外键值对信息

    当intent的action设置为ACTION_SEND时, 用于发送电子邮件,可用 EXTRA_EMAIL 键指定“目标”收件人,用 EXTRA_SUBJECT 键指定“主题”

  • flags:如何启动activity

    FLAG_ACTIVITY_CLEAR_TASK
    该用该flag构成的Intent启动应用时,被启动的Activity所在的栈被清空,事实上该Activity就会位于栈底

    FLAG_ACTIVITY_CLEAR_TOP
    如果栈中存在此Activity则清空该Activity到栈顶活动,事实上他成为栈顶

2、 应用选择器

当有多个组件匹配时的默认情况

// Create the text message with a string
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
sendIntent.setType("text/plain");

// Verify that the intent will resolve to an activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(sendIntent);
}

Intent简介_第1张图片

使用选择器时

// Create intent to show the chooser dialog
Intent chooser = Intent.createChooser(sendIntent, title);

// Verify the original intent will resolve to at least one activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(chooser);
}

Intent简介_第2张图片

3、PendingIntent的作用

  • NotificationManager执行Intent
  • 主屏幕应用执行Intent
  • 未来某一时间要执行的Intent,AlarmManager

推荐阅读:Intent参数详解

你可能感兴趣的:(Android基础)