是否可以在Android中使用ContentProvider并直接访问数据库?

时间:2011-10-14 18:48:59

标签: android database android-contentprovider sqliteopenhelper

我的应用程序使用直接数据访问它的数据库。对于其他应用程序,我没有任何东西可以暴露在外面。正如CommonsWare在SO上所说的那样,“如果你没有任何东西需要揭露 - 请不要使用ContentProvider”。现在,我想添加widget来显示其中一个表中的几个字符串,存储在Database中。我应该将直接访问代码重构为 ContentProvider 模式吗?有没有办法从小部件直接访问数据库?有没有办法同时在一个应用程序中同时使用ContentProvider和数据库?

1 个答案:

答案 0 :(得分:1)

  

现在,我想添加widget来显示其中一个表中的几个字符串,存储在数据库中。

我将假设“小部件”你的意思是“app widget”。

  

我应该将直接访问代码重构为ContentProvider模式吗?

您不必仅因为编写应用小部件而执行此操作。

  

有没有办法从小部件直接访问数据库?

当然,使用您在应用中其他任何位置使用的相同机制。

  

有没有办法让ContentProvider同时在一个应用程序中直接访问数据库?

是的,虽然你必须要小心确保在两种情况下都使用相同的SQLiteDatabase对象,这样就不会遇到线程问题。