首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Architecture:使用多个ContentProviders和onUpgrade事件

Architecture:使用多个ContentProviders和onUpgrade事件
EN

Stack Overflow用户
提问于 2011-05-20 13:30:33
回答 2查看 603关注 0票数 0

我的应用程序有两个数据库表:ProductsShoppingCard。所以我创建了一个ProductContentProviderShoppingCardContentProvider。每个ContentProvider在其onCreate()方法中调用一个私有类,该类是SQLiteOpenHelper的子类。

  1. 从我的观点来看,我会在一个分离的 ConfigBean中创建一个全局静态变量,负责内容提供程序。因此,如果我更新了所有表,那么所有表都会更新。 不工作的=>。简单地说,onUpdate事件从未被触发过。
  2. 如果您在每个内容提供程序中指定一个DATABASE_VERSION,但在每个内容提供程序中使用时,版本号不同。 不工作的=>。在我看来,这也没有任何意义,因为SQLiteOpenHelper中的参数名为DATABASE_VERSION 而非 TABLE_VERSION。因此,换句话说,如果不更新/抛出所有onUpgrade侦听器上的事件,就无法更新任何表。
  3. 如果您在每个内容提供程序中指定一个DATABASE_VERSION,但在每个内容提供程序中使用相同的版本号。 工作的=>。

问题:

为什么不能将DATABASE_VERSION作为外部的公共静态变量来处理全局的升级,或者我的体系结构完全走错了路?

EN

回答 2

Stack Overflow用户

发布于 2011-05-26 08:02:55

我的问题的解决方案是为两个内容提供者创建一个基类。这个类拥有SQLiteOpenHelper的唯一实例。这还确保创建了所有数据库表。我在阿里·塞尔吉尼,2010年11月5日的帖子中找到了这个信息。

票数 1
EN

Stack Overflow用户

发布于 2011-05-24 13:08:54

好吧,我找到了这种奇怪行为的原因:

我认为,如果您有多个DATABASE_VERSION,那么我将ContentProviders作为外部参数的方法是正确的。

我只是忘了还有另一个ContentProvider:一个简单的ConfigTable来存储设置。我认为我最终有一个不同的DATABASE_VERSION值的组合,这将导致在每个启动时重新创建数据库。

在引用了来自所有ContentProviders的单个param之后,一切都如愿以偿。

不管怎样,谢谢你,塞巴斯蒂安

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6072628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档