我有一个与这里类似的问题:Is it possible to use ContentProvider and direct data access to Database in Android?,但在我的例子中,我希望小部件应用程序是一个单独的应用程序。
因此,我有了第一个使用标准SQLiteOpenHelper的sqlite数据库的安卓应用程序。这个帮助器是在我的应用程序onCreate中创建的一个单例。效果很好。
现在,我想让第二个应用程序-so成为一个小部件应用程序--它也需要访问数据库。因此,我想使用ContentProvider来实现。
1)这样做安全吗?或者我是否必须重构主应用程序以仅使用ContentProvider (显然对我来说这将是一个绝妙的例子!)
2)如果可以,应该如何设计contentProvider?我想我将不得不重用我的单例SQLiteOpenHelper,并最终在contentProvider.onCreate中创建它?
发布于 2012-04-05 05:20:28
我也在尝试使用ContentProvider和单例db对象。这似乎是一种有效的方法。
引用自:http://groups.google.com/group/android-developers/browse_thread/thread/20d8cbf7bf88f6d9
“只打开数据库一次。如果你没有使用内容提供商,实现一个单例,它负责在你的应用程序中打开数据库一次。
“让我说清楚--内容提供程序从不关闭数据库没有任何问题。没有什么。这不是避免使用内容提供程序的理由。事实上,这是一个非常好的设计方法,如果您不使用内容提供程序,但直接访问,我建议对单例实现使用完全相同的方法。”
“如果你想有一个内容提供者,并且在其他地方也要直接访问数据库,那么在拥有数据库的单例之上实现你的内容提供者。
-- Dianne Hackborn安卓框架工程师hack...@android.com
https://stackoverflow.com/questions/8403569
复制相似问题