文件消失,并重新出现



我在商店里有一个安卓应用程序,可以将一些键值对保存在一个文件中(见下文)。最近我想对应用程序进行一个小的更新(一些字体和颜色,没有逻辑),我注意到在更新的应用程序中缺少文件。然后,我卸载了该应用程序并再次从Play商店安装了旧版本,数据再次存在。为什么更新版本中缺少数据?

  • 文件名和路径从未更改。
  • 我没有更改这些加载/保存方法的任何内容
  • 该文件必须位于某个位置,因为无论我卸载应用程序的频率如何,旧商店应用程序仍然可以加载它。
  • 在更新的版本中,我更改了版本代码和版本号
  • 在清单中设置了 allowBackup="true">
  • 编译SdkVersion 是 25
  • 构建工具版本是 25.0.2
  • minSdkVersion 9
  • maxSdkVersion 25
  • 我设置了以下权限
    • 互联网
    • WRITE_OWNER_DATA
    • ACCESS_EXTERNAL_STORAGE
    • ACCESS_NETWORK_STATE

要将某些内容保存到我使用的文件中:

public void commit() {
OutputStream outputStream;
try {
File file = mContext.getFileStreamPath(FILENAME);
if (file.exists()) {
file.createNewFile();
}
outputStream = mContext.openFileOutput(FILENAME, Context.MODE_PRIVATE);
ObjectOutputStream objectoutputstream = new ObjectOutputStream(outputStream);
String json = new Gson().toJson(mAppsettings, AppSettings.class);
objectoutputstream.writeObject(json);
objectoutputstream.close();
outputStream.close();
} catch (IOException e) {
LogUtils.v("Saving failed with IOExceptionn" + e.getLocalizedMessage());
}
}

要加载保存的数据,我使用以下方法:

private void load() {
InputStream inputStream;
try {
File file = mContext.getFileStreamPath(FILENAME);
if (!file.exists()) {
mAppsettings = new AppSettings();
return;
}
inputStream = mContext.openFileInput(FILENAME);
ObjectInputStream objectinputstream = new ObjectInputStream(inputStream);
String json = (String) objectinputstream.readObject();
mAppsettings = new Gson().fromJson(json, AppSettings.class);
objectinputstream.close();
inputStream.close();
} catch (IOException e) {
LogUtils.v("Settings: load(): IOExceptionn" + e.getMessage());
} catch (ClassNotFoundException e) {
LogUtils.v("Settings: load(): ClassNotFoundExceptionn" + e.getMessage());
}
}

我更新了

  • 编译SDKVersion 从 25 -> 27
  • minSdk版本从 9 -> 14
  • 已删除构建工具版本

并且问题不再发生。我无法说出问题到底是什么,为什么它不再是问题。无论如何,感谢您的所有帮助!

最新更新