我至少在纸上理解了Content Provider和直接访问SQLiteDatabase之间的基本区别。我有一个适用于我的应用程序的原型(prototype),目前,它只是直接访问数据库。我对使用Content Provider模式确实没有任何经验,但是我发现我需要与其他应用程序共享一些数据。

我将只共享十几个表中的大约2个,所以我想知道是否应该完全重做数据层以遵循Content Provider模式,还是为了通过Content Provider仅公开那些表?另一个应用程序,并且仍然直接访问主应用程序中的数据库。

我在原型(prototype)中遇到的问题之一是,我进行了一些相当复杂的事务,而为使工作正常进行而编写的代码设计得不是特别好,并且根本无法重用。当我向该应用程序添加更多功能时,在开始编写自己的数据之前,我需要一个设计更好的数据访问层,有人知道这种类型的东西具有设计模式的任何好的资源吗?另外,如果我需要走内容提供者路线,那么我是否将对数据库事务具有可靠的控制权?

最佳答案

我认为,仅使内容提供程序具有直接数据库代码之上的所需功能,您就不会有问题。内容提供程序实际上只是用于访问看起来非常像SQLite的结构化数据的抽象。 :)如果应用程序的各个内部部分与提供程序直接访问同一数据库,则只要两者的代码配合得很好,就可以了。

实际上,我不赞成“您必须始终使用内容提供者”。如果不需要内容提供者,请不要使用。只是直接SQLite,如果更容易。如果您需要内容提供程序来与其他应用程序进行某些特定的交互,请随意为此编写一个内容提供程序,而不必使其成为一件复杂的大事,以支持您的应用程序在数据库内部所做的所有工作。如果这更容易,那就太好了。这也使您无意间将您的应用程序中的私有(private)数据暴露给他人的可能性大大降低。

10-08 08:16
查看更多