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。承诺是过时的