如何解决ObjectInputStream readObject 仅在某些 android 设备上返回 null
我正在开发一个使用 libgdx
的游戏,我通过保存一个实现 Serializable
的类来保存游戏的状态。它在台式机和我拥有的几个 android 设备上运行良好,但它仍然在其他人的设备上运行。我不知道是什么原因造成的。
以下是我保存和加载对象的方法:
public static GameData gd;
final static String fileName = "sa.sav";
public static void save() {
try {
ObjectOutputStream out = new ObjectOutputStream(
Gdx.files.local(fileName).write(false));
out.writeObject(gd);
out.close();
} catch(Exception e) {
e.printstacktrace();
Gdx.app.exit();
}
}
public static void load() {
try {
if(!saveFileExists()) {
init();
return;
}
ObjectInputStream in = new ObjectInputStream(
Gdx.files.local(fileName).read());
Gdx.app.log("Save","in = " + in);
gd = (GameData) in.readobject();
Gdx.app.log("Save","gd = " + gd);
in.close();
} catch(Exception e) {
e.printstacktrace();
Gdx.app.exit();
}
}
public static boolean saveFileExists() {
return Gdx.files.local(fileName).exists();
}
public static void init() {
gd = new GameData();
gd.init();
save();
}
GameData 类:
public class GameData implements Serializable {
private static final long serialVersionUID = 1;
private int highscores;
private int totalCoins;
final int currentCharacterListVersion = 2;
private int userCharacterListVersion;
private boolean soundEnabled = true;
private float sfxVolume = 6f;
private float musicVolume = 6f;
private int lastLoginDay = 330;
private int dailyBonusCount = 0;
ArrayList<String> characters;
MyMap charList = new MyMap();
MyMap locationList = new MyMap();
}
其中 MyMap
包含 2 个 Map 和一些函数。
我不太熟悉如何处理 Serializable objects
因此我不知道该怎么做。我不能使用 Libgdx Preferences
,我不仅要存储 Strings
和 Integers
,还要存储 Maps
。因此,有关为什么它仅适用于某些设备的任何帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。