是否可以在Android中使用ContentProvider并直接访问数据库? (多个应用案例)

时间:2011-12-06 16:45:49

标签: android database concurrency android-contentprovider

我有一个类似的问题:Is it possible to use ContentProvider and direct data access to Database in Android?但在我的情况下,我希望widget应用程序是一个单独的应用程序。

所以我有一个第一个使用标准SQLiteOpenHelper的sqlite数据库的Android应用程序。这个帮助器是在我的Application onCreate中创建的单例。效果很好。

现在我想制作第二个应用程序 - 也就是一个小部件应用程序 - 它也需要访问数据库。所以我想使用ContentProvider。

1)这样做是否安全,或者我必须重构主应用程序以仅使用ContentProvider(显然对我来说是一个showstopper !!)

2)如果没问题,我该如何设计contentProvider?我想我将不得不重用我的单例SQLiteOpenHelper并最终在contentProvider.onCreate中创建它?

1 个答案:

答案 0 :(得分:2)

我也在尝试使用ContentProvider和单例db对象。这似乎是一种有效的方法。

引自:http://groups.google.com/group/android-developers/browse_thread/thread/20d8cbf7bf88f6d9

  

“仅打开数据库一次。如果您没有使用内容   提供者,实现一个负责打开的单身人士   数据库一次适用于您应用中的所有代码。

     

“让我说清楚 - 内容没有错   提供者从不关闭数据库。没有。这是没有理由的   避免使用内容提供商。实际上它是一个非常好的设计   方法,如果您没有直接使用内容提供商   访问,我会建议使用完全相同的方法   单身实施。

     

“如果您希望内容提供商 AND 也在其他地方直接进行   访问数据库,然后在上面实现您的内容提供商   拥有数据库的单身人士。

     

- Dianne Hackborn Android框架工程师黑客... @ android.com