大家好!
如果想让两个完全不同的Android应用程序访问和操作同一个数据库,是否有一种通常首选的实现范例?这样做是否被推荐或甚至技术上可行?这样的架构会是什么样子?
目前,我正在考虑让这两个应用程序各自实现自己的ContentProvider
(这两个ContentProvider
都将访问同一个数据库,但保证永远不会同时进行)。我也考虑过构建一个共同的内容提供程序,并在访问数据库时让这两个应用程序都使用它。我更喜欢第一个示例,但并未完全放弃后者。
原因:
我有两个需要访问共同数据库的应用程序。数据库本身存储数据,但也描述了数据行之间的关系,通常描述了一组“表单”,其中表单内容;UI元素如文本框、按钮和各种列表,是可定制的。两个应用程序都使用数据库中的这些“描述数据”在运行时生成各自应用程序的部分UI。
因此,这两个应用程序有两个方面:一个是“管理”方面(管理数据结构和数据行之间的关系),另一个是“通用用户”方面(读取/修改实际数据值)。故意选择将这两个方面分别放在不同的应用程序中。
注意!数据值与数据结构分开存储,即值存储在一个单独的表中,而结构在另一个表中描述。这意味着这两个应用程序基本上会修改同一个数据库中的两个不同表,并且它们永远不会修改“另一个表”,可以说是互不干扰。
欢迎提出任何想法。该应用程序仍处于规划阶段,现在是进行根本性更改的时候。
ContentProvider
放在自己的 APK 中的想法有点勇敢,但我不能立刻排除它(这个想法很有趣,就像被咒语迷住了一样)。把它放在自己的 APK 中会有什么好处吗?如果目标上没有 CP APK,那么我可能需要在客户端(管理员和用户 APK)中实现某种“优雅降级”概念。 - dbm