一、内容提供者(content provider):是Android四大组件之一,内容提供者是应用程序之间共享数据的接口,应用程序创建的数据库,默认情况下是私有的。别的应用程序访问不到数据,如果想把数据对外提供,就要用到内容提供者。ContentProvider屏蔽了数据存储的细节,内部实现对用户完全透明,用户只需关系操作数据的uri即可,ContentProvider可以实现不同app之间共享。
SQL也有增删改查的的方法,但是SQL只能只能查询本应用下的数据库,ContentProvider还可以去增删改查本地文件/XML文件的读取等。Android系统将这种机制应用到方方面面。比如:联系人(通讯录应用程序)Provider专为不同应用程序提供联系人数据;短信(短信应用程序)Provider专为不同应用程序提供系统短信信息。当应用程序继承ContentProvider类,并重写该类用于提供数据和存储数据的方式,就可以向其他应用共享其数据。虽然使用其他方法也可以对外共享数据,但数据访问方式会因为数据存储的方式而不同。如:采用文件方式对外共享数据,需要进行文件操作读写操作;采用SharedPreferences 共享数据,需要使用SharedPreferences API读写数据。而使用ContentProvider共享数据的好处是统一了数据访问方式。总之,内容提供者管理了对结构化数据最常见的就是数据库中数据的访问,操作内容提供者是不同进程之间以数据库数据形式交互数据的标准方式。
1、Android平台提供了ContentProvider使一个应用程序指定数据集提供给其他应用程序,其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。
2、只有需要在多个应用之间共享数据才会用到内容提供者。例如:通讯录被多个应用程序使用,且必须存储在一个内容提供者中,它的好处是统一数据访问方式。
3、开发人员不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对ContentProvider的操作。
4、ContentProvider使用url来唯一标识其数据集,这里的url以content://作为前缀,表示数据由ContentProvider来管理。
网友评论