Java 如何序列化和保存对象堆栈?
我正在尝试保存一个对象堆栈,这样当我关闭然后重新打开应用程序时,堆栈仍然存在Java 如何序列化和保存对象堆栈?,java,android,Java,Android,我正在尝试保存一个对象堆栈,这样当我关闭然后重新打开应用程序时,堆栈仍然存在 我尝试扩展应用程序以创建一个全局变量,但当应用程序关闭时,该变量被删除。我认为我应该使用Java的内部内存,但不知道如何使用堆栈而不是单个对象。我在研究这个问题时遇到了困难,因为每当我在搜索中查找任何带有“stack”的内容时,所有内容都与运行时堆栈有关,而不是数据结构。存储大型数据对象的最佳方法是借助Room、ormlite或其他包装器的内部SQLite数据库 或者,如果它的值很小,如保存的选项、时间或类似值,则使用
我尝试扩展应用程序以创建一个全局变量,但当应用程序关闭时,该变量被删除。我认为我应该使用Java的内部内存,但不知道如何使用堆栈而不是单个对象。我在研究这个问题时遇到了困难,因为每当我在搜索中查找任何带有“stack”的内容时,所有内容都与运行时堆栈有关,而不是数据结构。存储大型数据对象的最佳方法是借助Room、ormlite或其他包装器的内部SQLite数据库
或者,如果它的值很小,如保存的选项、时间或类似值,则使用SharedReferences存储您需要使用SharedReferences 我将向您展示如何保存字符串并使用它 步骤1:
SharedReferences SharedReferences代码>
步骤2:SharedReferences=this.getSharedReferences(“您选择的名称”,0)代码>
步骤3:SharedReferences.getString(“mystring”和“)代码>
第四步:`SharedReferences.edit.PutString(“mystring”,“我想要什么?”
保存“).commit()`
现在它被保存了
步骤5:字符串mystring代码>
第六步:mystring=SharedReferences.getString(“mystring”,“mystring”)代码>
使用步骤5和6使用保存的变量
该对象需要可序列化。为此,您需要使用Serializable扩展对象
您需要将对象以文件的形式存储到磁盘上,或者以blob的形式存储在数据库中
启动应用程序时,需要反序列化对象并将其加载到内存中
不过,除了上述3点之外,还有一种选择
有一个名为SnappyDb的开源库,它可以持久化键值对,并且可以非常快地执行序列化和drserialization
为什么它需要是一个堆栈?您可以将其转换为数组并存储在Android内部存储器中,对吗?一句忠告,如果您正在制作Android应用程序,请不要将对象序列化为文件。一开始,这似乎是一个简单的解决方案,但当您的项目增长时,您将遇到许多难以解决的性能问题和错误。如果数据很简单,则应将其保存在共享首选项中,或者使用SQLiteOpenHelper或Room创建数据库。这就是为什么他们为创建数据库,以便正确、方便地存储数据。为什么不编写SharedReferences SharedReferences=GetSharedReferences(“您选择的名称”,0)
和String mystring=SharedReferences.getString(“mystring”,“mystring”)代码>。还有,为什么要使用.commit()
?我刚从我的项目中复制,所以不需要使用“this”,没有commit()什么都不会发生:)是的,但现在是2019年,请使用.apply()而不是.commit。承诺是过时的