android API Guides学习--Intent and Intent Filters

Intent是一个消息传递类,同时能够启动一些组件android

做用:浏览器

1启动一个activity组件。安全

经过Context类的 startActivity()/ startActivity ()方法启动activity组件.
app

2启动一个service组件框架

经过Context类的startService()方法启动此组件,只能执行一次性操做(例以下载文件)。ide

经过Context类的 bindService()方法ui

3发送一条广播spa

经过Context类的sendBroadcast(), sendOrderedBroadcast(), or sendStickyBroadcast()给别的组件发送消息。翻译

Intent类型:3d

1显式intent:

当你知道你想要启动的组件时,指定将启动组件的类名(需建立一个具体的组件)。例如后台下载文件,启动一个activity响应用户行为。

当你一使用一个显示intent去启动组件时,就在intent类中指定了详细的intent属性(除了Component name外,其余属性可不选)。

通常来讲,显式intent用来启动特殊的activity与service。

2隐式intent:

没有明确指定一个组件名称。通常用于在app中调用另外一个app的组件。

当你使用隐式intent时,android系统去查找合适的组件来启动。若是intent匹配intent filter,则启动组件并把intent传递给intent类,若是有多个intent filter符合,则弹出对话框让用户选择。

经过resolveActivity()方法可判断是否查找到合适的组件。

intent filter是manifest文件中的语句,他描述了组件想要接收的各类类型的intent。

为了确保你的app是安全的,使用显式intent启动一个service时不要给service声明intent filter。使用隐式intent启动service是有安全隐患的。由于你不能肯定哪一个service将响应intent,用户也看不到是哪一个service在启动。

建立一个intent类

intent类携带的主要信息:

Component name:

将要启动的组件名。

这个属性是可选择的。

但若是你想建立一个明确的组件,那么你要肯定组件名。(显式intent)

若是你不肯定组件名,系统以intent其余属性决定启动哪一个组件.(隐式intent)

当启动service组件时,为了确保你的app是安全的,最好要有明确的组件名。

你能够经过intent构造方法,或者setComponent(), setClass(), setClassName()方法来肯定将要启动的组件名。

Action:

经过一个字符串肯定将要执行的动做。例如查看或选择。

你能够在你的app中定义一个action属性的字符串供你使用,可是你应该优先使用intent类或其余框架类中已定义好的action属性字符串。

ACTION_VIEW:当你有些信息须要给用户显示时,例如在map app中显示地址

ACTION_SEND:用户想要经过另外一个app分享数据。

你能够经过intent类中setAction()方法或intent构造方法来设置action属性。

若是想要定义一个action属性字符串的话,不要忘了定义时把包名做为字符串的前缀。

eg:

 1 static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL"; 

Data:

URI类引用的数据行使MIME类型数据的职能。提供的数据的类型通常由intent的action决定。

除了URI以外,在建立intent类很是重要事情是指定数据类型(MIME type).

设置URI类型,用setData()方法,设置MIME类型,用setType()方法。两种都设置用setDataAndType()方法.(intent类)

Category:

给intent以字符串的形式添加额外信息。

大部分intent不须要添加category。

CATEGORY_LAUNCHER:activity是一个初始的任务activity而且他被列在应用程序管理器上。

CATEGORY_BROWSABLE:目标activity容许浏览器经过引用连接启动他来显示数据

经过addCategory()方法添加Category属性

Extras:

经过键值对的形式保存额外的信息来完成要求的功能,就好像一些动做和特定的数据URI对应,一些动做和特定的extras对应。

经过putExtra()方法添加extras.

自定义Extra字符串。

 1 static final String EXTRA_GIGAWATTS = "com.example.EXTRA_GIGAWATTS"; 

Flags:

定义了如何启动activity以及如何对待他。

 

翻译自android 官网API Guide。

相关文章
相关标签/搜索