我的Android应用程序有一个SQLite数据库和一个内容提供程序。该内容提供者已在应用程序的AndroidManifest.xml
中注册。它不会导出,因此只有我的应用程序可以看到它。
作为重置用户个人资料的一部分,我想彻底擦除此数据库并从头开始重新创建它。最初,我尝试从 Activity 的上下文中调用deleteDatabase()
。此方法有效,但前提是该应用程序已关闭并随后重新打开。否则,当我尝试插入表示数据库为只读的行时,它将崩溃。我的理解是,在调用deleteDatabase()
之前,需要先关闭连接。但是,据我所知,该连接是由内容提供者管理的,不应手动关闭。
或者,我使用call()
中的ContentResolver
方法来调用自定义函数,该函数将删除表中的所有数据并手动重置序列计数。
这行得通,但是现在我必须手动从每个表中删除数据,并且必须跟踪我将来所做的任何更改。
有没有更好的方法来删除整个数据库,并在使用onCreate()
时让我的DatabaseHelper
(SQLiteOpenHelper
)的ContentProvider
触发?
最佳答案
我想到的一个建议是让您的自定义函数删除表并重新创建它们。您已经具有在onCreate()
的DatabaseHelper
中创建表的代码。在DatabaseHelper
和自定义方法都可以访问的地方重构它。
关于android - 使用内容提供程序时重新创建数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40796110/