使用intent启动不同组件的方法

组件类型 启动方法
Activity startActivity(Intent intent)
startActivityForResult(Intent intent,int requestCode)
Service ComponentName
startService(Intent service)
boolean bindService(Intent service,ServiceConnection conn,int flags)
BroadcastReceiver sendBroadcast(Intent
intent)
sendBroadcasst(Intetn String receiverPermission)
sendOrderedBroadcast(Intent intent,String
receiverPermission,BroadcastReceiver resultReceiver,Handler scheduler,int
initialCode,String initialData,BundleinitialExtras)
sendOrderedBroadcast(Intent intent,String receiverPermission)
sendStickyBroadcast(Intent intent)
sendStickyOrderedBroadcast(Intent intent,BroadcastReceiver
resultReceiver,Handler scheduler,,int initialCode,String initialData,BundleinitialExtras)

IntentFilter过滤信息

(1)IntentFilter中的过滤信息主要有action,category,data

(2)一个过滤列表中的action,category,data可以有多个,注意一个Intent对象最多只能包括一个Action属性,但是可以包含多个Category属性,可通过

   Intent.addCategory(String str)来添加Category属性

(3)一个Activity中可以有多个intent-filter,一个Intent只要能匹配任何一组intent-filter即可成功启动对应的Activity。

ation匹配规则

(1)action代表该Intent所要完成的一个抽象“动作”,注意Category则用于为Action添加额外的附加类别信息,两者属性都为字符串,通常结合一起使用。

(2)action区分大小写,大小写不同的字符串相同的action会匹配失败

(3)action的匹配要求Intent中的action存在并且必须和过滤规则中的其中一个action相同

category的匹配规则

(1)程序创建Intent时,默认启动Category属性值为Intent.CATEGORY_DEFAULT常量

(2)一个Intent对象最多只能包括一个Action属性,但是可以包含多个Category属性,Category的匹配过程与action不一样,intent中一旦有Category,那么不管有几个

,每个都要能够和过滤规则中的任何一个category相同

data的匹配规则

(1)data由两部分组成,mimeType和URI

(2)data属性通常用于向Action属性提供操作的数据,data属性接受一个Uri对象,URI的结构为<scheme>://<host>:<port>/[<path>|<pathPrefix>|<PathPattern>]

例如:content://com.example.project:8080/folder/subfolder/etc;http:www.baidu.com:80/search/info

(3)mimeType属性用于指定该Data所指定Uri对应的MIME类型,这种MIME类型可以是任何自定义的MIME类型,只要符合abc/xyz格式的字符串即可

(4)如果要为Intent指定完整的data,必须通过调用setDataAndType方法,而不能通过调用setData方法再调用setType方法或者调用setType方法再调用setData方法

《Android开发艺术探索》读书笔记之IntentFillter的匹配规则的更多相关文章

  1. Android开发艺术探索读书笔记——01 Activity的生命周期

    http://www.cnblogs.com/csonezp/p/5121142.html 新买了一本书,<Android开发艺术探索>.这本书算是一本进阶书籍,适合有一定安卓开发基础,做 ...

  2. Android开发艺术探索读书笔记——进程间通信

    1. 多进程使用场景 1) 应用某些模块由于特殊需求须要执行在单独进程中. 如消息推送,使消息推送进程与应用进程能单独存活,消息推送进程不会由于应用程序进程crash而受影响. 2) 为加大一个应用可 ...

  3. android开发艺术探索读书笔记之-------view的事件分发机制

    View的点击事件的分发,其实就是对MotionEvent事件的分发过程,即当一个MotionEvent产生后,系统需要把这个事件传递给一个具体的View,而这个过程就是分发过程. 分发过程主要由以下 ...

  4. Android开发艺术探索学习笔记(一)

    第一章 Activity的生命周期和启动模式 1.1Activity的生命周期全面解析 1.1.1典型情况下的生命周期分析 (1)在两个Activity进行切换时,当前的Activity的onPaus ...

  5. Android开发艺术探索学习笔记(三)

    第三章  View的事件体系 3.1 View基础知识 3.1.1 什么是view View 是Android中所有控件的基类,是一种界面层的控件的一种抽象,它代表了一个控件. 3.1.2 View的 ...

  6. Android开发艺术探索学习笔记(十一)

    第十一章  Android的线程和线程池 从用途上来说,线程分为子线程和主线程,主线程主要处理和界面相关的事情,而子线程往往用于执行耗时的操作.AsyncTask,IntentService,Hand ...

  7. Android开发艺术探索学习笔记(十)

    第十章  Android的消息机制 面试中经常会被问到的一个问题:handler是如何在子线程和主线程中进行消息的传递的,这个问题通过了解Android的消息机制可以得到一个准确的答案. Androi ...

  8. Android开发艺术探索学习笔记(六)

    第六章 Android的Drawable  Drawable的优点:使用简单,比自定义view的成本要低:非图片类型的Drawable占用空间小,有利于减小APK安装包的大小. 6.1Drawable ...

  9. Android开发艺术探索学习笔记(四)

    第四章 View的工作原理 4.1初识ViewRoot和DecorView ViewRoot是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成 ...

随机推荐

  1. [Tkinter 教程12] 布局管理 (Pack Place Grid)

    简介: 本文讲述如何使用 tkinter 的布局管理 (被称作 layout managers 或 geometry managers). tkinter 有三种布局管理方式: pack grid p ...

  2. VLDB 2019:

    纵览数据库顶会VLDB 2019论文,我们发现了六大发展动向 作者 | 韩硕 [导读]一年一度的数据库领域顶级会议 VLDB 2019 于当地时间8月26日-8月30日在美国加利福尼亚州洛杉矶召开,探 ...

  3. 了解html表单

    html表单 表单的根标签:form form标签属性 action:处理表单业务的后台代码的位置(URL) method:提交方式 post get  默认值 enctype:encode type ...

  4. linux下找到JVM占用资源最高的线程

    linux的top命令不仅可以看线程的资源占用,还可以看进程下线程的资源占用,结合对应的java命令可以定位到具体有问题的Java代码,以找出占用CPU最高的线程为例: 第一步: 通过 top命令查找 ...

  5. struct和class内存大小的计算

    以下均是在VS2017下的结果 结构体内存大小的计算: 用例一: #include<stdio.h> union ss { int a; char b; }; struct MyStruc ...

  6. 线段树模板(无lazy优化)

    区间修改与区间查询问题 模板: int ans; struct node{ int l,r,v; node(){v=;} }tree[LEN*]; int arr[LEN]; //建树 void bu ...

  7. [LeetCode] 847. Shortest Path Visiting All Nodes 访问所有结点的最短路径

    An undirected, connected graph of N nodes (labeled 0, 1, 2, ..., N-1) is given as graph. graph.lengt ...

  8. [LeetCode] 910. Smallest Range II 最小区间之二

    Given an array A of integers, for each integer A[i] we need to choose either x = -K or x = K, and ad ...

  9. Matlab:Toeplitz矩阵-向量乘法的快速傅里叶(FFT)算法

    一.$\tt Toeplitz$矩阵与循环($\tt Circulant$)矩阵 定义 为$n\times n$阶循环矩阵. 定义 $T_n(i,j)=t_{j-i} $  为$n\times n$ ...

  10. Codeforces Round #606 (Div. 1) Solution

    从这里开始 比赛目录 我菜爆了. Problem A As Simple as One and Two 我会 AC 自动机上 dp. one 和 two 删掉中间的字符,twone 删掉中间的 o. ...