Intent的属性介绍

在Android系统的设计中有四大组件:Activity,Service,BroadcastReceiver,ContentProvider。Intent可以被应用于ContentProvider之外的其它三种组件之间互连互通,共享和交互数据(甚至跨越了进程的限制),很大程度的解决了组件之间的耦合性,使组件更加独立。因此有人把Intent定为第五大组件。从字面上来讲,Intent是“意图,意愿”的意思,它服务于其它的组件,因此其自身的设计具有很大的通用性。本文主要介绍,完成这些强大功能背后的属性

  1.ComponentName

  Intent 主要被分为两类:显性(Explicit Intent)和隐性(Implicit Intent)。ComponentName主要被用于显性Intent中,它明确了需要被启用的组件的名称(如果是同一个程序内的其它组件,则只需具体的ComponentName;如果在不同的应用中需要添加PackageName),这样系统就会将该Intent发送到对应的组件中;

  2.Category

  Category是种类的意思,它将Intent从大的范围上进行了分类,相比具体的ComponentName更加宽范。Android系统中已经预设了一些范围或功能。当然同样是可以自定义的。下表展示了一些比较常用的属性介绍:

Category名字 描述
CATEGORY_DEFAULT 默认的Category值。使用隐式Intent方式启动组件时,Category是必须的。如果没有指定系统在启动组件的时候会默认加上CATEGORY_DEFAULT,因此在组件注册的地方的Intent过滤器中也要加上CATEGORY_DEFAULT才能使用
CATEGORY_HOME 表明这个应用是操作系统启动后,启动的第一个应用。一般是Launcher所需要使用的
CATEGORY_LAUNCHER 这个属性值表示组件可以被放到启动列表(Launcher)中来进行启动(一般为应用程序入口)

          

                

  

  3.Action

  Action是动作的意思,表明要做什么事。Android系统同样定义了很多Action,通过这些Action可以启动一些系统级的组件(功能)来做一些事情。同样Action可以进行自定义,启用我们启用的组件。下表展示了一系统的比较常用的Action

Action名字 描述
ACTION_MAIN 表明由此组件开始新的任务,一般为就用的入口Activity使用
ACTION_CALL 启用一个拨打电话的Activity
ACTION_ANSWER 组件处理呼入的电话

  4.Data

  Data即表示需要Intent携带的数据,它可以将数据从源组件带到目标组件中,供目标组件的使用。它一般采用了类似scheme://uri的表达方式,同时指这了数据的MIME类型

  5.Extras

  Extras 是对上面Data数据的补充,与Data不同的是它采用key-value的方式保存数据的。它的内部是能过一个Bundle对象来保证数据的准确性和守整性的

  6.Flags

  Flags主要运用在Activity组件的启动上,其主要作用与Activity的LauncherMode有关。它规定了系统如何启用一个Activity组件以及Activity所属的TASK

上面的这些属情的定义保证的Intent的核心功能和其不可或缺的地位:待激活组件筛选(ComponentName,Category,Action);共享数据(Data,Extras)以及更加具体化的Activity组件的启动模式相关的(Flags)

时间: 2024-10-14 02:39:48

Intent的属性介绍的相关文章

Intent应用

Intent用法 1.1启动一个特定的Activity Intent intent=new Intent(CurrentActivity.this,OtherActivity.class); startActivity(intent); 1.2启动一个未指明的Activity Intent inter=new Intent(Intent.ACTION_DIAL,Uri.parse(“tel:115-1345”)); startActivity(intent); 1.3处理一个Activity的返

Activity启动模式 及 Intent Flags 与 栈 的关联分析

   在学习Android的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制,其底层的通信是以Binder机制实现的,在物理层则是通过共享内存的方式实现的.     Intent主要用于2种情景下:(1)发起意图  (2)广播     它的属性有:ComponentName,action,data,category,extras,flags等,通常情况下,进行Intent的匹配涉及到3个属性:Action,Data,Category.这些东西都需要了解才能对它有个深入的

Intent的Data和Type和Flag属性-amdroid学习之旅(五十一)

Data属性介绍 使用Data和Action属性启动系统Activity 代码示例 public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void btn(View vi

【转】Activity启动模式 及 Intent Flags 与 栈 的关联分析

http://blog.csdn.net/vipzjyno1/article/details/25463457    在学习Android的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制,其底层的通信是以Binder机制实现的,在物理层则是通过共享内存的方式实现的.     Intent主要用于2种情景下:(1)发起意图  (2)广播     它的属性有:ComponentName,action,data,category,extras,flags等,通常情况下,进行

【Android基础】Activity启动模式以及Intent Flags 与 栈 的全面解析

Android开发的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制. Intent主要用于2种情景下:发起意图 .广播 其底层实现原理不在此篇文章的讨论范围,以后会陆续更新上的. 下面我就根据近期学习,总结记录下Activity启动模式 及 Intent Flags 与 栈 的关联分析. 1.首先我们先搞清楚什么是栈: 栈是一种常用的数据结构,栈只允许访问栈顶的元素,栈就像一个杯子,每次都只能取杯子顶上的东西,而对于栈就只能每次访问它的栈顶元素,从而可以达到保护栈顶元

(六十一)Activity启动模式 及 Intent Flags 与 栈 的关联分析(转载自:http://blog.csdn.net/vipzjyno1/article/details/25463457)

   在学习Android的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制,其底层的通信是以Binder机制实现的,在物理层则是通过共享内存的方式实现的.     Intent主要用于2种情景下:(1)发起意图  (2)广播     它的属性有:ComponentName,action,data,category,extras,flags等,通常情况下,进行Intent的匹配涉及到3个属性:Action,Data,Category.这些东西都需要了解才能对它有个深入的

intent.getExtras()和intent.getStringExtra()

intent.getExtras()返回一个Bundle对象. 看下面代码: Intent intent=new Intent(this,SecondActivity.class); Bundle bundle=new Bundle(); bundle.putString("test", "123"); intent.putExtras(bundle); startActivity(intent); String params=this.getIntent().ge

Intent传参数

Intent 是Android 程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组 件想要执行的动作,还可以在不同组件之间传递数据.Intent 一般可被用于启动活动.启动 服务.以及发送广播等场景 // A activity调用 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.act

Android之Intent

前言:大家都知道Android程序的实现一般都由四大组件构成: Activity :Android程序实现功能的主体,提供了和客户交互的界面,也提供了和后台交互的功能. Service :是一个没有界面的activity,主要用于后台运行的程序. Broadcast :是当前程序和系统之间通信的工具. ContentProvider :android程序,管理资源的一种工具. 上面这4个组件都需要在manifest里面注册才能够使用,manifest就相当于android程序的大管家.当然光有组