首页 > 解决方案 > 为什么Android在部署时会覆盖存储的数据?

问题描述

首先,请考虑到我是 Xamarin.Forms 和一般移动应用程序开发的新手,因此解决这个问题可能很容易。尽管如此,我在没有任何可行的解决方案的情况下进行了很多谷歌搜索。

我的应用程序在 Xamarin.Forms (c#) 中,我正在使用 Visual Studio 19。我正在小米手机上对其进行测试。

我正在处理将应用程序部署到手机时出现的问题。它仅在 AndroidManifest.xml 发生一些更改(所以我猜是某种“深度”更改)以及卸载并重新安装应用程序之后才会发生。问题是我存储了一些 SQLite 数据,即使在卸载后我也需要保留在手机中(我需要在重新安装后打开同一个应用程序后才能看到这些数据)。但是该应用程序会记住一些数据,这些数据是一周前的实际输入,但不会恢复(重新安装后)比这更新的任何数据。我将举一个例子来更好地展示它。我昨天和今天都在 SQLite 数据库中存储了一些东西。当我卸载应用程序时,然后单击开始调试按钮,它成功构建、部署等,但在应用程序打开后,

现在,在 Android 文档中,我读到自动备份(从手机到 Google Drive)大约每天发生一次(如果android:allowBackup="true"是,但这是默认情况下)。我还读到了放入android:fullBackupContent="true"<application>在 AndroidManifest.xml 中)可能会有所帮助,但在我的情况下没有。我也知道,在 VS 中有这样的:工具 -> 选项 -> Xamarin -> Android 设置 → “在部署之间保留应用程序数据缓存在设备上”(我勾选了这个)

所以我的问题是,即使在重新安装后,我如何才能获得完整的 SQLite 数据库?有没有办法可以将数据 X 保存到 SQLite 数据库中,1 分钟后卸载应用程序,然后重新安装并查看数据 X?

顺便说一句,我的清单如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.myappname">
  <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
  <application android:label="myappname.Android"
               android:allowBackup="true"
              android:fullBackupContent="true"></application>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

希望我已经解释了一切。

谢谢你。

标签: c#androidsqlitexamarin.formsandroid-backup-service

解决方案


推荐阅读