您的位置:首页 > 其它

对于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()给出,判断数据库是否存在,如果不存在则根据数据库名创建一个。

如果数据库存在,则根据构造函数传入的版本号去创建表或者升级表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: