实现保存和恢复/推送和弹出对象属性状态的最佳方法是什么?像glPushMatrix()和glPopMatrix()?
例如:
obj.v1 = false;
obj.v2 = 0;
obj.v3 = "init";
obj.save();
obj.v1 = true;
obj.v2 = 2;
obj.v3 = "foo"
/* Do something... */
obj.restore();
/* Now v1 = false, v2 = 0, v3 = "init" again */
答案 0 :(得分:3)
要保存到文件:使您的课程可序列化
package com.yourpackage.name;
import java.io.Serializable;
public class myClass implements Serializable {
public enum counterType {
count_down,
count_up
}
public int myIntValue= 0;
}
如果收到警告' Serializable类X没有声明long'类型的静态最终serialVersionUID字段,您可以通过添加serialVersionUID的值来解决此问题,例如:
private static final long serialVersionUID = 1234567890abcdefg;
像往常一样声明你的变量(例如在你的主要活动中):
myClass myClassVariable = new myClass();
myClassVariable.myIntValue = 99;
现在您可以使用以下方法将数据保存到文件中:
try
{
FileOutputStream myFileOutputStream = new FileOutputStream(getFilesDir() + "file_name.ser");
ObjectOutputStream myObjectOutputStream = new ObjectOutputStream(myFileOutputStream);
myObjectOutputStream.writeObject(myClassVariable);
myObjectOutputStream.close();
}
catch (Exception e)
{
Log.e("Error when saving to file.",Log.getStackTraceString(e));
}
再次加载数据:
try
{
FileInputStream myFileInputStream = new FileInputStream(getFilesDir() + "file_name.ser");
ObjectInputStream myObjectInputStream = new ObjectInputStream(myFileInputStream);
readClassVariable = (myClass) myObjectInputStream.readObject();
myObjectInputStream.close();
}
catch (Exception e)
{
Log.e("Error when loading from file.",Log.getStackTraceString(e));
}
readClassVariable现在包含您保存的类,例如readClassVariable.myIntValue等于99
希望它有所帮助。欢迎评论:)
P.S。我需要代表,所以如果你愿意,不要忘记接受答案!
答案 1 :(得分:0)
保存到RAM:
您只需将其复制到另一个类变量即可。
但请注意,当您使用等号时,仅复制REFERENCE(您仍在使用相同的变量):
myClass1 = myClass2
在这种情况下,最简单的方法是创建一个新类并分别为所有参数复制参数:
myClass1.myIntValue = myClass2.myIntValue
这样您就可以将值而不是引用复制到(相同)变量。