intent 在android中就像activity之间包括不同class中的activity交互的胶水,把他们联系起来。

intent主要有以下几个重要组成部件

action ACTION_VIEW, ACTION_DIAL等 标准的ACTION_VIEW 被“android.intent.action.VIEW”调用

data 可以通过Uri

加上一些主要属性

category 是定义要执行的activity的附加属性,例如,CATEGORY_LAUNCHERactivity将在启动时作为最高级显示

type 指定intent数据的明确类型

component 指定一个明确的class组件去用这个intent

extras 这是Bundle的额外信息,bundle可以提供扩展的信息给组件

intent主要通过两种方式去使用

显示intent 通过指定一个特定的class组件(通过setComponent(ComponentName) 或setClass(Context, Class))

一般这种intent不包含其他信息,简单通过这种方式去启动这个class组件中内部包含的不同组件

隐示intent 没有直接指定一个组件,而是通过提供足够的信息给系统去决定哪个组件最符合要求然后去启动它。

通过隐示intent 可以用一个intent 映射一个 activity,BroadcastReceive或service(甚至多个)可以捕获它。

intent决策机制主要通过匹配<intent-filter>中的信息(在broadcast中, 任何的BroadcastReceiver

对象要通过registerReceiver(BroadcastReceiver, IntentFilter)准确的注册)

action, type和category这三方面intent的信息决定intent的使用。

通过这些信息packageManager将会决定查询哪个组件能捕获这个intent

这个合适的组件主要通过AndroidManifest提供的intent信息决定的

1.action 如果给定了,必须作为组件可以处理的列出来

2.type(mimetype) 从intent的data接收。如果在intent的data中没有提供,像action必须包含在intent中

必须作为组件可以处理的列出来

3.categories如果给定了,必须作为组件可以处理的列出来

也就是,如果你包含CATEGORY_LAUNCHER和CATEGORY_ALTERNATIVE,你将只能处理的组件

通过intent包含这两种categories,activity经常需要支持CATEGORY_DEFAULT以致我们这些intent能被

Context.startActivity()发现。

AndroidManifest.xml每一个<activity>包含的每一个<intent-filter>表明这个activity可以接收的intent信息(模板)


startActivity(Intent)用于启动一个新的activity, 新的activity位于activity栈的顶端

startActivityForResult(Intent, int)当你想在一个自己启动的activity结束时得到消息结果时,

第二个参数(大于0)定义了启动的新的activity代号。

并且新的activity结束时将会返回结果,通过onActivityResult(int requestCode, int resultCode, Intent Data)

其中requestCode就是父activity指定新activity的代号

子activity可以通过setResult(int)(标准结果为RESULT_CANCELED(子activity失败时), RESULT_OK,或者任意自己定义的值 返回到父activity里

onActivityResult 的 resultCode)

更多相关文章

  1. Android(安卓)平板开发关闭一个Fragment的方法
  2. 天气预报(三)
  3. android六大布局和UI组件
  4. 如何创建一个android的react-native组件(一)
  5. Android实现获取SERIAL信息的方法
  6. Android程序中多个 Launcher Activity
  7. android基础知识06:intent和intentfilter
  8. android中scrollview与webview冲突事件
  9. ANR(1)---理解Android(安卓)ANR的信息收集过程

随机推荐

  1. Android 日历开发教程[二]
  2. 启动emulator时失败
  3. 安卓笔记android 本地Tomcat配置servlet
  4. 平安科技移动开发二队技术周报(第三十三期
  5. 【高德地图开发1】---简介
  6. Android异步机制一:使用Thread+Handler实
  7. Android平台开发-Android HAL develop-An
  8. Ubuntu下安装android开发环境经历
  9. Android(安卓)Exception No such table a
  10. Android主线程消息循环