Java 共享首选项或缓存机制,用于存储具有过期密钥的数据

Java 共享首选项或缓存机制,用于存储具有过期密钥的数据,java,android,Java,Android,我们正在尝试为我们的应用程序支持kindle设备上的通知。我们可能会收到来自服务器的重复通知。但重复通知将包含相同的事务ID。因此,我们计划将事务ID存储到一些内存中(比如共享pref或使用CacheBuilder的缓存)。当我们收到通知时,我们将用内存中的条目检查事务ID。如果它存在,那么我们将忽略该通知。如果没有,我们将写入内存并显示通知。如果我们使用shared pref,我们计划在共享内存中的条目数达到1000时删除前100个条目。如果我们使用CacheBuilder或其他缓存机制,我们

我们正在尝试为我们的应用程序支持kindle设备上的通知。我们可能会收到来自服务器的重复通知。但重复通知将包含相同的事务ID。因此,我们计划将事务ID存储到一些内存中(比如共享pref或使用CacheBuilder的缓存)。当我们收到通知时,我们将用内存中的条目检查事务ID。如果它存在,那么我们将忽略该通知。如果没有,我们将写入内存并显示通知。如果我们使用shared pref,我们计划在共享内存中的条目数达到1000时删除前100个条目。如果我们使用CacheBuilder或其他缓存机制,我们计划将时间策略设置为1小时,以便在1小时后自动删除缓存中的条目

实际上,我不熟悉共享pref和缓存机制。我有以下问题。有人能澄清一下吗

  • 哪种机制(共享内存/缓存)更适合此问题
  • 如果我继续使用共享内存,如何删除写入共享pref的前100个条目 (一旦达到1000的硬限制)。getAll()将返回一个映射。但是 此映射是否包含与共享pref文件中相同的顺序
  • 对共享pref的后续写入是否保持顺序?我是说 如果共享pref文件中有4个条目,下一个写保证吗 它作为文件中的第5个条目写入
  • 在写入和读取时是否需要使用锁定机制 共享pref文件,因为我可能正在写入共享pref 如果第二次通知同时发出,我需要 检查共享pref文件中的事务ID
  • 是否有任何机制可以删除共享pref文件中的条目 从写入条目起一小时后
  • 若我使用缓存机制,那个么在应用程序关闭的情况下该机制是否有效。 因为kindle设备即使在应用程序未启动时也可以接收通知 跑步

如果以前已经问过这些类型的问题,请向我指出这些问题,或者请向我指出可以找到这些问题答案的链接。投反对票没问题。如果反对票是针对单个问题下的多个问题,我不能将其划分为多个问题,因为所有问题都与单个问题相关。