Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android中实现持久队列_Java_Android_Message Queue_Persistent Storage - Fatal编程技术网

Java 如何在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中 无论如何

我想在Android中实现一个持久队列。本质上是一个队列,在另一个线程获取数据并将其发送到某处之前,数据一直存储在该队列中。数据存储或消费的顺序并不重要,例如FIFO、LIFO、LILO等。Android中是否有支持这一点的现代库


我在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;谢谢你的解释。这是我在这里得到的最好的回答之一!