1

我正在使用 SQLite 数据库在 Xamarin(C#) 中开发一个 android 应用程序。但问题是每次我在模拟器或手机上安装应用程序时,旧数据库都会被删除。

有什么办法可以使数据库永久化?我希望它出现在设备上,即使应用程序被卸载,假设用户将再次重新安装应用程序。如果用户不想删除所有内容,我如何询问用户他/她是否想在卸载应用程序时删除所有内容,然后删除所有数据或至少维护数据库?

4

3 回答 3

2

如果您卸载应用程序,则无法保留数据库。

于 2013-10-03T18:41:19.047 回答
0

有什么办法可以使数据库永久化?

缺少某种自定义ROM,不。

如果用户不想删除所有内容,我如何询问用户他/她是否想在卸载应用程序时删除所有内容,然后删除所有数据或至少维护数据库?

当用户正在删除应用程序以执行其他操作时,您将无法提示他们。如果这是一个可用的选项,不道德的开发人员可以使用这样的钩子将他们的应用程序重新安装到不同的位置,这很糟糕。

但是,您可以包含某种首选项,允许用户备份他们的数据并将数据库复制到您的应用程序私有目录之外的位置。当然,如果数据应该是私有的,您必须提供自己的加密数据方式,并且不能保证文件不会被用户、其他应用程序等删除。

如果您的信息本质上不敏感,则可能将数据库写入公共目录(从一开始就可以将您的应用程序filesDir 或 externalFilesDir以外的任何内容。卸载应用程序时不会删除公共目录中的文件。

不过,您可能会遇到更大的问题。如果用户正在切换设备,则数据库的本地副本将无济于事。您需要以某种方式下载信息并恢复状态。在这一点上,大多数人求助于将信息发送到某种网络服务。Android 的备份管理器可能对您有所帮助。

于 2013-10-03T20:18:33.003 回答
0

启动模拟器时,请确保未选中“擦除用户数据”。这将允许数据在您测试时保持不变。我不知道卸载后是否可以保留数据,因为默认情况下它存储在应用程序根目录之外的名为 data/data 的目录中

于 2013-10-03T18:34:32.067 回答