我正在研究一组新颖的应用程序,这些应用程序分享它们的基本行为(从数据库中挑选随机单词并将它们组合起来)。因为它们都基本相同,所以我试图将代码的基础视为某种模板,结果不一致。
当我正在进行更新时,我想让项目更加友好,并且开始考虑使用ContentProvider而不是直接使用SQLiteOpenHelper。我倾向于这种方式,因为Google的文档 INCREDIBLY 坚持使用它们。我的问题在于命名冲突。
TL; DR跳过这里查询问题。
如果两个第三方Android应用程序(由同一个开发人员制作)都希望使用相同的ContentProvider,但不依赖于正在安装的另一个应用程序,那么它们是否都包含ContentProvider的副本(具有相同的权限和所有内容)并允许同时安装(使用最高版本的ContentProvider)?
我不确定内容提供商的设置方式是否可行,这似乎是单一的。我无法想象Google并未将此视为潜在问题或所需功能。是的,可能会出现一些复杂问题,但我们已经克服了地狱和其他类似命名的问题......做起来并不是那么困难。
答案 0 :(得分:1)
我倾向于这种方式,因为谷歌的文档非常坚定地使用它们。
并非所有Google员工都同意这一立场,更不用说像我这样的其他笨蛋了。我只使用ContentProvider
在进程之间共享数据。
如果两个第三方Android应用程序(由同一个开发人员制作)都希望使用相同的ContentProvider,但不依赖于正在安装的另一个应用程序,那么它们是否都包含ContentProvider的副本(具有相同的权限和所有内容)并允许同时安装(使用最高版本的ContentProvider)?
AFAIK,第一个注册的ContentProvider
会赢,而不是最高版本。事实上,如果第二个应用尝试重新定义现有的ContentProvider
,我不确定第二个应用会安装。
此外,如果用户卸载了当前的ContentProvider
,则另一个应用程序被搞砸了,因为它的数据现在变成了“poof”。