我使用Visual Studio编写了一个Xamarin Android应用程序,该应用程序可以创建估计值。 在不同的时间,我在本地保存估算值。 如果尝试重新打开 Estimate,它将尝试本地文件,如果不存在,则会尝试服务器。 一旦估计成功保存到服务器,我就会删除本地文件。 这是代码。
string filePath = Path.Combine(Settings.DocumentsPath, fileName);
JsonSerializer ser = new JsonSerializer();
StreamWriter opf = new StreamWriter(filePath, false);
try
{
ser.Serialize(opf, obj);
}
catch (Exception ex)
{
EventLog.Error(ex);
}
opf.Close();
Settings.DocumentsPath 是这样设置的:
private static string _DocumentsPath = null;
public static string DocumentsPath
{
get
{
_DocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
return _DocumentsPath;
}
}
当我加载估算时,我首先检查是否有本地副本,如果存在,则加载该副本。 否则,它会调用服务器。 当估计成功保存到服务器时,我使用以下代码删除本地文件:
string filePath = Path.Combine(Settings.DocumentsPath, FName);
if (File.Exists(filePath))
{
try
{
File.Delete(filePath);
}
catch (Exception ex)
{
EventLog.Error(ex);
}
}
这行得通。 打开 Estimation 的后续调用尝试本地文件,但它不存在,因此请求是从服务器发出的。
问题是,完成所有这些操作后,如果我清理项目并再次运行它,则会备份本地保存的 Estimate。 加载估计时,它会查找估计的旧本地版本,并且不会向服务器发送请求。 我可以从平板电脑上完全卸载该应用程序并重新安装它,然后旧的本地文件会回来。 除了 Environment.SpecialFolder.Personal,有没有更好的地方来存储本地文件? 如果 Visual Studio 中的某个设置阻止它在部署应用进行调试时还原这些本地文件?
有一个备份设置,您可以在应用程序标记的 AndroidManifest 中禁用该设置:
android:allowBackup="true"
安卓:允许备份 是否允许应用参与 备份和还原基础结构。如果此属性设置为 假,不会执行应用程序的备份或还原, 即使通过全系统备份,否则会导致 通过 ADB 保存的应用程序数据。此值的默认值 属性为真。