我已经使用Visual Studio编写了一个Xamarin Android应用程序来创建评估。在不同的时间,我将估计保存在本地。如果您尝试重新打开预估,它将尝试本地文件,如果本地文件不存在,它将尝试服务器。一旦预估成功保存到服务器上,我就删除本地文件。下面是代码。
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);
}
}
这是可行的。打开预估的后续调用会尝试本地文件,但本地文件不存在,因此请求是从服务器发出的。
问题是,在完成所有这些操作之后,如果我清理项目并再次运行它,则会显示本地保存的估计的旧版本。然后,当预估被加载时,它会找到该预估的旧本地版本,并且不会向服务器发送请求。我可以从平板电脑上完全卸载该应用程序,然后重新安装,然后返回较旧的本地文件。有没有比Environment.SpecialFolder.Personal更好的地方来存储本地文件?如果Visual Studio中的某个设置阻止它在部署应用程序进行调试时恢复这些本地文件?
发布于 2019-08-27 23:39:40
有一个备份设置,您可以在应用程序标记的AndroidManifest中禁用该设置:
android:allowBackup="true"
android:allowBackup是否允许应用程序参与基础设施的备份和恢复。如果将此属性设置为false,将不会执行应用程序的备份或恢复,即使是通过全系统备份也不会执行,否则将导致所有应用程序数据通过adb保存。此属性的默认值为true。
https://stackoverflow.com/questions/57677356
复制相似问题