我想在多个应用程序之间共享数据,而不是使用ContentResolver-> ContentProvider机制,我可以定义一个客户端库,它与正在进行SQLite数据库操作的进程对话?
ContentProvider带来了什么,这是我们无法通过让Process公开数据来实现的?
答案 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)