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

Man*_*har 4 android android-contentresolver android-contentprovider

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

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

use*_*305 8

您可以在"Content-Provider"和"SQLite Database"之间找到答案Exact Difference.

但我想解释一下..

What does the ContentProvider brings in here which we cannot achieve by have a Process expose the data?
Run Code Online (Sandbox Code Playgroud)

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

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