对于Intent和IntentFilter的理解记录
2015-04-24 16:54
381 查看
来自:http://blog.csdn.net/fhx123fhx123/article/details/7906113
来个通俗的比方:
Intent比作一个人
IntentFilter比作一个饭店
1、如果一个人想吃东西(Intent的action),而酒店中提供吃东西(Intent-Filter的action),则匹配成功。
2、如果一个人想吃东西(Intent的action),而酒店中提供吃东西和睡觉(Intent-Filter的action),则匹配成功。
3、如果一个人想吃东西和睡觉(Intent的action),而酒店中提供吃东西和睡觉(Intent-Filter的action),则匹配成功。
4、如果一个人想吃东西和睡觉(Intent的action),而酒店中提供吃东西(Intent-Filter的action),则匹配不成功。
5、如果一个人想吃东西(Intent的action)而且只吃米饭(Intent的gategory),而酒店中提供吃东西(Intent-Filter的action)且提供米饭(Intent的gategory),则匹配成功。
6、如果一个人想吃东西(Intent的action)而且只吃米饭(Intent的gategory),而酒店中提供吃东西(Intent-Filter的action)且只提供面包(Intent的gategory),则匹配不成功。
7、如果一个人想吃东西(Intent的action)而且只吃米饭(Intent的gategory),而酒店中提供吃东西(Intent-Filter的action)且提供米饭和面包(Intent的gategory),则匹配成功。
8、如果这个人开了一辆车(Intent的data),而酒店没有提供车库(Intent-Filter的data),则匹配不成功。
9、如果这个人开了一辆车(Intent的data),而酒店有提供车库(Intent-Filter的data),且没有限制车的类型,则匹配成功。
总结:Intent所带有的东西应该都是Intent-Filter都有提供的。
附加:data、ContentProvide和ContentResolver的理解
ContentProvide对data封装之后会向外界提供一个URI的链接,在系统启动的过程中应该是注册了这个URI,而ContentResolver会根据这个URI去查找对应的ContentProvider。
如果data来自于数据库则要用到另外的一个类SQLiteOpenHelper。
SQLiteOpenHelper的构造函数public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version)
参数分别是:上下文,数据库名,创建cursor的类(一般默认为null),数据库版本号。
而数据库的创建和升级都是由getWritableDatabase()给出,判断数据库是否存在,如果不存在则根据数据库名创建一个。
如果数据库存在,则根据构造函数传入的版本号去创建表或者升级表。
来个通俗的比方:
Intent比作一个人
IntentFilter比作一个饭店
1、如果一个人想吃东西(Intent的action),而酒店中提供吃东西(Intent-Filter的action),则匹配成功。
2、如果一个人想吃东西(Intent的action),而酒店中提供吃东西和睡觉(Intent-Filter的action),则匹配成功。
3、如果一个人想吃东西和睡觉(Intent的action),而酒店中提供吃东西和睡觉(Intent-Filter的action),则匹配成功。
4、如果一个人想吃东西和睡觉(Intent的action),而酒店中提供吃东西(Intent-Filter的action),则匹配不成功。
5、如果一个人想吃东西(Intent的action)而且只吃米饭(Intent的gategory),而酒店中提供吃东西(Intent-Filter的action)且提供米饭(Intent的gategory),则匹配成功。
6、如果一个人想吃东西(Intent的action)而且只吃米饭(Intent的gategory),而酒店中提供吃东西(Intent-Filter的action)且只提供面包(Intent的gategory),则匹配不成功。
7、如果一个人想吃东西(Intent的action)而且只吃米饭(Intent的gategory),而酒店中提供吃东西(Intent-Filter的action)且提供米饭和面包(Intent的gategory),则匹配成功。
8、如果这个人开了一辆车(Intent的data),而酒店没有提供车库(Intent-Filter的data),则匹配不成功。
9、如果这个人开了一辆车(Intent的data),而酒店有提供车库(Intent-Filter的data),且没有限制车的类型,则匹配成功。
总结:Intent所带有的东西应该都是Intent-Filter都有提供的。
附加:data、ContentProvide和ContentResolver的理解
ContentProvide对data封装之后会向外界提供一个URI的链接,在系统启动的过程中应该是注册了这个URI,而ContentResolver会根据这个URI去查找对应的ContentProvider。
如果data来自于数据库则要用到另外的一个类SQLiteOpenHelper。
SQLiteOpenHelper的构造函数public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version)
参数分别是:上下文,数据库名,创建cursor的类(一般默认为null),数据库版本号。
而数据库的创建和升级都是由getWritableDatabase()给出,判断数据库是否存在,如果不存在则根据数据库名创建一个。
如果数据库存在,则根据构造函数传入的版本号去创建表或者升级表。
相关文章推荐
- Android开发-对于PendingIntent的简单理解
- Android笔记二.深入理解Intent和IntentFilter(二)
- 对于scrum 各个阶段的理解和琐碎记录
- Android组件间通信--深入理解Intent与IntentFilter
- Android 记录2 对于Android事件分发的理解
- What:理解Intent filter
- 深入理解Intent和IntentFilter
- 深入理解 Android 通信信使Intent和IntentFilter
- Android Studio——理解Intent和Intent Filter
- android intentfilter 理解
- Android组件间通信--深入理解Intent与IntentFilter
- Andorid杂笔 深入理解Activity,Intenthe IntentFilter
- android--context和intentFilter
- 对于android中自定义组件属性的理解
- Android基础之intent-filter、action、category标签使用
- 4.Intent-filter的匹配规则
- 对于多线程的理解
- 对于js中eval()函数的理解 和 写一个函数trim() 去掉字符串左右空格
- 一些常用的Intent及intent-filter的信息
- Android Intent and Intent Filter