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

Pro*_*001 7 sqlite android recreate oncreate android-contentprovider

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

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

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

这是有效的,但现在我必须手动删除每个表中的数据,并且必须跟踪我将来做出的任何更改.

是否有更好的方法来删除整个数据库并在使用时使用onCreate()my DatabaseHelper(SQLiteOpenHelper)触发器ContentProvider

Cod*_*ice 1

我想到的一个建议是让您的自定义函数删除表并重新创建它们。onCreate()您已经拥有在of中创建表的代码DatabaseHelperDatabaseHelper将其重构到可由自定义方法访问的地方。