标题总结了我的问题,但基本上我想理解的是,为什么Android设计人员希望需要与共享数据一起使用的应用程序使用Content Provider,而不是直接访问SQLite数据库?
我能想到的唯一原因就是安全性,因为某些文件只能通过某些进程来访问,因此Content Provider是网守,可以确保每个应用程序在允许对数据库文件的读取和/或写入访问之前都具有适当的特权。这是创建ContentProvider的主要原因吗?
标题总结了我的问题,但基本上我想理解的是,为什么Android设计人员希望需要与共享数据一起使用的应用程序使用Content Provider,而不是直接访问SQLite数据库?
我能想到的唯一原因就是安全性,因为某些文件只能通过某些进程来访问,因此Content Provider是网守,可以确保每个应用程序在允许对数据库文件的读取和/或写入访问之前都具有适当的特权。这是创建ContentProvider的主要原因吗?
Answers:
首先,它是隔离数据使用者和数据提供者的一种方式。如果要公开某些数据或至少对其他应用程序可用,则可以开发自己的内容提供商或扩展现有的内容提供商。
的确,这可以使服务器从安全的角度控制访问,但是它还允许您在需要时重新设计数据的物理实现。在这种情况下,您需要做的就是调整内容提供商的后端。数据使用者应用程序将不必重写。他们将通过其内容解析器继续访问您的数据,而不会意识到实际基础实现中的任何更改。
此外,即使数个客户端访问了数据,Android也会仅实例化内容提供程序的一个实例,因此它可以处理并发访问,而无需您担心。
最后,我相信它将解决启动和关闭过程的繁琐工作。
该ContentProvider
也抽象了一切是为了与其他第三方应用程序进行通信所需要的进程间通信。必须自己编写此代码将是一个巨大的痛苦。