2013-10-03 30 views
1

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

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

回答

0

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

缺少某种类型的自定义ROM。

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

您将无法提示用户,因为他们正在删除应用程序以执行其他操作。如果这是一个可用的选项,那么不择手段的开发人员就可以使用这样的钩子来将他们的应用程序重新安装在不同的位置,这很糟糕。

但是,您可以包含某种偏好,允许用户备份其数据并将数据库复制到应用程序专用目录之外的某个位置。当然,如果它应该是私密的,你将不得不提供你自己的数据加密方式,并且不保证该文件不会被用户,其他应用程序等删除。

如果您的信息是在本质上不敏感,可能将数据库写入一个公共目录(从一开始应用程序filesDir or externalFilesDir以外的任何其他应用程序都是如此,当应用程序被卸载时,公共目录中的文件不会被删除)

您可能有一个如果用户切换设备,数据库的本地副本不会帮助您,您需要下载信息并恢复状态。此时,大多数人都会将信息发送给某些人Andr。网络服务oid的Backup Manager可能对您有帮助。

+0

如果在开发过程中暂时丢失数据的问题是一个烦恼,您可能能够使用这个[问题]上的评论(http://stackoverflow.com/questions/17429863/xamarin-android-every-time-i-run-the-app-on-device-the-application-is-unistall?rq = 1)来帮助Xamarin在每个部署中卸载并重新安装应用。 –

0

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

+0

我确保...每次我做出更改时,我都会部署或按F5。该应用程序被删除,并再次安装在仿真程序... –

2

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

相关问题