android - 两个内容提供者访问同一个数据库

标签 android architecture android-contentprovider

大家好!

我想知道如果一个人想要两个完全不同的 Android 应用程序访问和操作同一个数据库,是否有一个普遍首选的实现范例?是否建议甚至在技术上完全可以做到这一点?这样的架构会是什么样子?

到目前为止,我正在考虑让这两个应用程序实现它们自己的 ContentProvider(尽管 ContentProvider 都将访问同一个数据库,但保证永远不会同时进行) .我还考虑过构建一个通用的内容提供程序,并让两个应用程序在访问数据库时都使用该内容提供程序。我更喜欢第一个例子,但还没有完全放弃后面的例子。

理由:
我有两个应用程序需要访问一个公共(public)数据库。数据库本身存储数据的同时也描述了数据行之间的关系,通常描述了一组“表格”,其中表格内容;文本框、按钮和不同类型的列表等 UI 元素是可定制的。两个应用程序都使用数据库中的“描述数据”在运行时生成相应应用程序 UI 的部分。

因此,这两个应用程序有两个方面:一个“管理”方面(管理数据结构和数据行之间的关系)和一个“通用用户”方面(读取/修改实际数据值)。在单独的应用程序中将这两个方面分开是一种深思熟虑的选择。

注意!数据值与数据结构分开,即存储在一个单独的表中,结构被描述在另一个表中。这意味着这两个应用程序实质上将修改同一个数据库中的两个不同的表,并且它们永远不会修改“另一个表”,可以这么说。

如有任何想法,我们将不胜感激。该应用程序仍处于规划阶段,因此,现在是进行根本性更改的时候了。

最佳答案

数据库,

是的,它被接受、鼓励并且可以在 Android 上进行。您确实有第三种选择(这无疑会让我发表一些激烈的评论),那就是将 ContentProvider (1) 放在一个 APK 中,它自己的。但是,鉴于您只有 2 种类型,您可以翻转四分之一来查看它由哪个 apk 托管。我会选择管理应用程序,但这对我来说是主观的。

如果您不厌其烦地创建两个应用程序,那么您对每个应用程序的行为以及每个应用程序可以操作的数据类型都有“先验”知识。因此,我会得出一个单一的 CP 接口(interface),并根据您描述的行为限制每个应用调用的内容。

弗兰克

关于android - 两个内容提供者访问同一个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4842218/

相关文章:

java - Kit Kat 与所有更高版本(5.x、6.x 和 7.x)之间的 Android 内容提供程序冲突

Android,库项目中的内容提供者

android - 是否可以在 2 个不同的 Android 应用程序中为内容提供商拥有相同的权限?

android - 在来电期间更改来电者的号码

android - Android Studio 中的两个模块使用相同的库

java - 如何知道 toast 何时显示完自己

javascript - 子组件应该在什么级别拥有自己的容器(逻辑react-redux的connect)组件才能管理自己的mapDispatchToProps?

Android:如何在超时时清除 EditText?

java - 服务器到客户端推送通知?

c# - 具有 Entity Framework 的 WCF 存储库服务模式