Java 如何在Android中实现持久队列
我想在Android中实现一个持久队列。本质上是一个队列,在另一个线程获取数据并将其发送到某处之前,数据一直存储在该队列中。数据存储或消费的顺序并不重要,例如FIFO、LIFO、LILO等。Android中是否有支持这一点的现代库Java 如何在Android中实现持久队列,java,android,message-queue,persistent-storage,Java,Android,Message Queue,Persistent Storage,我想在Android中实现一个持久队列。本质上是一个队列,在另一个线程获取数据并将其发送到某处之前,数据一直存储在该队列中。数据存储或消费的顺序并不重要,例如FIFO、LIFO、LILO等。Android中是否有支持这一点的现代库 我在SOF上发现了一个以前的问题,但这个问题可以追溯到2012年:有很多方法可以做到这一点。您可以通过将集合保存到类似SQLite的数据库中来持久化该集合,将其序列化为文件并在需要时反序列化,也可以将其保存在Android的SharedReferences中 无论如何
我在SOF上发现了一个以前的问题,但这个问题可以追溯到2012年:有很多方法可以做到这一点。您可以通过将集合保存到类似SQLite的数据库中来持久化该集合,将其序列化为文件并在需要时反序列化,也可以将其保存在Android的SharedReferences中 无论如何,有一个很酷的图书馆叫Hawk 那是一个 安卓安全、简单的键值存储 Hawk的工作原理: 如果您查看Hawk源代码,就会发现它使用SharedReferences将数据保存到磁盘。它序列化要持久化的对象,并将其作为字符串保存到SharedReferences中 引用和图片取自Hawk github页面
您可以在持久性部分找到其他替代方法:有很多方法可以做到这一点。您可以通过将集合保存到类似SQLite的数据库中来持久化该集合,将其序列化为文件并在需要时反序列化,也可以将其保存在Android的SharedReferences中 无论如何,有一个很酷的图书馆叫Hawk 那是一个 安卓安全、简单的键值存储 Hawk的工作原理: 如果您查看Hawk源代码,就会发现它使用SharedReferences将数据保存到磁盘。它序列化要持久化的对象,并将其作为字符串保存到SharedReferences中 引用和图片取自Hawk github页面 您可以在这里的持久性部分找到其他选择:您可以查看 它有一个选项来持久化作业并对其进行优先级排序 您可以退房
它有一个选项来持久化作业并对其进行优先级排序 为什么不使用堆栈后进先出=新堆栈或队列先进先出=新优先级队列?这些看起来不错,但是我如何保持呢?比如说服务/活动被破坏后的优先级队列?为什么不使用Stack lifo=new Stack或Queue fifo=new PriorityQueue?这些看起来不错,但是我该如何坚持呢?比如说服务/活动被破坏后的优先队列?谢谢你的详细回答。我不知道您可以将收藏保存到SharedReferences。我以为这只是简单的类型。您可以在SharedReferences中存储的内容的大小有限制吗?您不能将集合直接保存到SharedReferences中。只能保存基本类型。但是您可以序列化列表,例如将列表转换为json并将其另存为字符串。但是您必须编写代码来实现这一点。因此,最好使用像Hawk这样的库。在任何情况下,都需要序列化对象来存储它。无论如何,如果集合非常大,最好不要将其保存到SharedReference中。这是因为SharedReference被保存为xml,加载大的xml可能会比较慢。我认为最有效的方法是使用SQLite,但这不是最简单的。Hawk使用SharedReferences将数据保存到磁盘!所以,如果你决定把它保存在SharedReferences中,我肯定会使用Hawk;谢谢你的解释。这是我在这里得到的最好的回答之一!谢谢你详尽的回答。我不知道您可以将收藏保存到SharedReferences。我以为这只是简单的类型。您可以在SharedReferences中存储的内容的大小有限制吗?您不能将集合直接保存到SharedReferences中。只能保存基本类型。但是您可以序列化列表,例如将列表转换为json并将其另存为字符串。但是您必须编写代码来实现这一点。因此,最好使用像Hawk这样的库。在任何情况下,都需要序列化对象来存储它。无论如何,如果集合非常大,最好不要将其保存到SharedReference中。这是因为SharedReference被保存为xml,加载大的xml可能会比较慢。我认为最有效的方法是使用SQLite,但这不是最简单的。Hawk使用SharedReferences将数据保存到磁盘!所以,如果你决定把它保存在SharedReferences中,我肯定会使用Hawk;谢谢你的解释。这是我在这里得到的最好的回答之一!