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

发布于 2024-12-10 03:02:58 字数 295 浏览 1 评论 0原文

我有一个使用直接数据访问其数据库的应用程序。我没有什么可以向其他应用程序公开的。正如 CommonsWare 在 SO 上的某处所说,“如果你没有什么可公开的 - 不要使用 ContentProvider”。现在,我想添加小部件来显示其中一个表中存储在数据库中的几个字符串。我是否应该将直接访问代码重构为ContentProvider模式?有没有办法从小部件直接访问数据库?有没有一种方法可以在一个应用程序中同时拥有 ContentProvider 和直接访问数据库的能力?

I have application that uses direct data access to it's Database. I have nothing to expose outside of it for other applications. As CommonsWare says somewhere on SO, "if you have nothing to expose - don't use ContentProvider". Now, I want to add widget to display a couple of strings from one of the tables, storing in Database. Should I refactor the direct access code to the ContentProvider pattern? Is there a way to use direct access to Database from widget? Is there a way to have both ContentProvider and direct access to database in one application?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云淡风轻 2024-12-17 03:02:59

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

我假设“小部件”实际上是指“应用程序小部件”。

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

您不必仅仅因为正在编写应用程序小部件就这样做。

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

当然,使用与应用程序中其他任何地方使用的机制相同的机制。

有没有一种方法可以在一个应用程序中同时拥有 ContentProvider 和直接访问数据库的能力?

是的,尽管您必须小心一点,以确保在这两种情况下使用相同的 SQLiteDatabase 对象,这样就不会遇到线程问题。

Now, I want to add widget to display a couple of strings from one of the tables, storing in Database.

I am going to assume that by "widget" you really mean "app widget".

Should I refactor the direct access code to the ContentProvider pattern?

You do not have to do this just because you are writing an app widget.

Is there a way to use direct access to Database from widget?

Sure, using the same mechanisms you are using anywhere else in your app.

Is there a way to have both ContentProvider and direct access to database in one application?

Yes, though you have to be a bit careful to make sure that you are using the same SQLiteDatabase object in both cases, so you do not run into threading issues.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文