使用ContentProvider而不是普通的SQLIte存储有什么好处?

时间:2012-07-13 08:44:41

标签: android android-contentprovider android-contentresolver

我想在多个应用程序之间共享数据,而不是使用ContentResolver-> ContentProvider机制,我可以定义一个客户端库,它与正在进行SQLite数据库操作的进程对话?

ContentProvider带来了什么,这是我们无法通过让Process公开数据来实现的?

2 个答案:

答案 0 :(得分:8)

您可以找到答案Exact Difference between “Content-Provider” and “SQLite Database”

但我想解释一下..

What does the ContentProvider brings in here which we cannot achieve by have a Process expose the data?

您应该注意一个特定的SQLite限制,即SQLite仅限单用户。这实际上意味着您需要保护您的数据库不会同时从多个线程访问。这在内容提供者中通常不是问题,因为它们几乎总是具有单线程实现。

同样优秀的做法是为您的数据提供额外的抽象级别,以便更容易在内部进行更改。如果您决定稍后更改基础数据库结构,该怎么办?如果您使用ContentProvider,则可以包含其中的所有结构更改,就好像您不使用它一样,您将被迫更改受结构更改影响的所有代码区域。此外,能够重复使用相同的标准API访问数据,而不是通过对数据库的低级访问来乱丢代码,这很不错。

答案 1 :(得分:0)