自定义ContentProvider的一些细节探究
http://blog.csdn.net/sadfishsc/article/details/7419573
1. 适用范围
对于什么情况下才会用到自定义的ContentProvider,官方文档的Dev Guide是这样描述的:
如果你想要提供以下的一种或几种特性的时候你才需要构造一个ContentProvider:
- 你想要为其它的应用提供复杂的数据或者文件;
- 你想允许用户从你的应用中拷贝复杂的数据到其它的应用中;
- 你想要使用搜索框架来提供自定义的搜索策略。
你完全不需要ContentProvider来调用一个SQLite数据库,如果这种调用完全在你自己的应用之中。
也就是说,ContentProvider的作用是为别的应用调用本应用中的数据或者文件提供接口,而它也是唯一的跨应用数据传递的接口。如果仅仅是同一个应用中的数据传递,则完全没有必要使用到自定义的ContentProvider。
另一方面,虽然ContentProvider也能组织文件数据或者SharedPreferences(其实也是文件数据)这种数据,但大多数情况下ContentProvider是作为SQLite数据库的调用接口来被继承的。其原因大概是在于重写的query()方法始终需要返回Cursor,而Cursor作为数据库数据的容器,并没有提供直接往Cursor中写入数据的方法。
http://blog.csdn.net/zhf198909/article/details/6903708
另外,通知变化对于ContentProvider来说并不是必需的,根据实际功能的需要,自定义的ContentProvider中多数情况下并不需要这句代码。