对于数据库操作大家有时候在犹豫到底该用ContentProvider或者DataBase ORM。
我在这简单的对比一下。可能由于自己的水平有限。可能有错误的地方希望大家指出!谢谢!
ContentProvider优势
1、如果你想把你的数据跟其他进程、程序共享。就要用android提供的contentProvider接口来做。
2、ContentProvider是Android提供的一个贯穿各个模块的通信接口,通信模式。有各种权限机制。可以有更高安全性。 数据访问是通过URI模式访问。返回Cursor数据。这个模式在SearchView,CursorLoader,CursorAdapter,云同步AsyncAdapter等地方用到了。不用ContentProvider这些要手动去实现。
3、ContentObserver模型。当数据发生改变的时候去通知某个URI 该数据发生改变。实时的一个监听效果。
ContentProvider缺陷
1、如果结构不好。dataBase的数据表项发生改变。需要重写很多代码。(借鉴android系统的方式,比如contactProvider等)每张表单独写出表项。这样重构会减少这个缺点。但是相对代码量比较大。
2、速度会比较慢一点。因为uri机制。getContentResolver()会先去系统查找一遍。这个查询过程是缓慢一点,性能受影响不大。