首页 > Android ContentProvider用法解惑

Android ContentProvider用法解惑

ContentProvider作为Android四大组件之一,顾名思义都知道他是用来在进程间传递数据的。但是,我有疑问了。我实现了一个闹钟应用,自定义的数据库,开始我使用了SQLiteOpenHelper的writedb直接读写了数据库,没使用ContentProvider。但是,目前一个新的需求是要求外部能够增删改查闹钟,所以,我又必须提供ContentProvider,是不是意味着之前用writedb读写的操作全部需要用ContentProvider重新实现一遍?


不好意思,又自问自答了。这个问题我已经在代码层面解决,解决方案是:

  1. 如果ContentProvider的update、insert、delete会影响到UI的显示,那代码中就不能直接操作DB了,而应该统一使用ContentProvider,同时需要注册ContentObserver进行Uri的监听,以便切换UI。

  2. 如果ContentProvider的操作不会影响UI,那就无所谓了。内部直接操作DB也是可以的。


应该是的,直接通过数据写的数据是应用私有数据,其他应用无法访问,不过如果DB文件在SD卡里面进行操作就好像可以访问。


根据ContentProvider定义,它是在不同应用中进行数据交换的标准API,当一个应用需要把数据暴露给其他应用时可以使用它,而其他应用可以通过ContentResolver去操作暴露的数据,通过ContentProvider暴露自己的数据操作接口,其他应用就可以通过该接口进行相应的增删改查操作。但通过ContentResolver操作本质就是调用了ContentProvider的操作,而其中的操作使用的还是SQLiteOpenHelper的db。所以个人认为不需要重写,不过这也是个人观点,还是要你自己去试试就知道结果了。

【热门文章】
【热门文章】