我想在User
对象上跟踪Android应用程序商店中的用户数据,我想从性能,内存方面了解更好。
1- Serialize User
object,然后在每次需要时反序列化用户对象。
public static void writeObject(Context context, String key, Object object)
throws IOException {
FileOutputStream fos = context
.openFileOutput(key, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(object);
oos.close();
fos.close();
}
public static Object readObject(Context context, String key) {
try {
FileInputStream fis = context.openFileInput(key);
ObjectInputStream ois = new ObjectInputStream(fis);
Object object = ois.readObject();
return object;
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return null;
}
serialization,deserialization
是否达到了效果?如果是,那么使用Static对象来跟踪用户数据抛出所有应用程序会更好,或者有另一个首选方法来跟踪用户数据抛出所有android应用程序。
任何指导都将不胜感激。
答案 0 :(得分:0)
序列化用于保存磁盘上对象的状态。并且在许多情况下都很有用。 让我们举一个简单的例子,一个游戏,你玩游戏,清除第三级,关闭它,当你再次开始它从第三级开始。
使用静态对象无法实现。因为当游戏关闭时,JVM会退出,静态对象会丢失值。
此处序列化出现在图片中,当游戏开始时,值被读取并分配回来。
现在,如果您的应用程序不使用此功能,请选择静态对象,因为序列化/ dfeserialization会影响性能。
答案 1 :(得分:0)
进行序列化,反序列化,您将限制应用程序添加要存储的新数据以供用户信息。您应该以定义的格式保存用户信息以避免此问题。
此外,您的应用程序一次只能由单个用户使用,因此考虑到性能问题仅值于阅读以前的用户。
答案 2 :(得分:0)
序列化和反序列化太慢了。如果您可以在静态对象中维护信息,这是更好的方法。仅在需要在应用程序关闭时保存数据时才使用序列化。
此外,您可以使用“共享首选项”保存一些简单的词典数据。
答案 3 :(得分:0)
首先,在android中,使用Parcelable比使用Serialized
更好不要使用静态对象,除非你确定自己能够维护静态对象,不要让它们在内存中更多地进行环聊
如果对象很简单且不太大,只需将其作为parcelable传递..如果它太大,将其本地保存在文件数据库或其他内容中,然后将其加载到任何您想要使用它的地方