使用内容提供商时重新创建数据库

时间:2016-11-25 00:22:49

标签: android sqlite android-contentprovider oncreate recreate

我的Android应用程序有一个SQLite数据库和一个内容提供程序。此内容提供商已在应用的AndroidManifest.xml中注册。它不会导出,因此只有我的应用才能看到它。

作为重置用户个人资料的一部分,我想彻底擦除此数据库并从头开始重新创建。起初我尝试从活动的上下文中调用deleteDatabase()。这有效,但仅在应用程序关闭后重新打开。否则,当我尝试插入表示数据库是只读的行时,它将崩溃。我的理解是在调用deleteDatabase()之前需要先关闭连接。然而,据我所知,连接由内容提供商管理,不应手动关闭。

作为替代方案,我使用call()中的ContentResolver方法调用自定义函数,该函数将删除表中的所有数据并手动重置序列计数。

这样可行,但现在我必须手动删除每个表中的数据,并且必须跟踪我将来做出的任何更改。

使用onCreate()时,是否有更好的方法可以删除整个数据库并使DatabaseHelper SQLiteOpenHelper触发{?}}?

1 个答案:

答案 0 :(得分:1)

我想到的一个建议是让您的自定义函数删除表并重新创建它们。您已经拥有了在onCreate() DatabaseHelper中创建表格的代码。重构这个DatabaseHelper和自定义方法都可以访问的地方。