首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Parcelable对象缓存

Parcelable对象缓存
EN

Stack Overflow用户
提问于 2015-04-05 09:26:18
回答 1查看 635关注 0票数 0

我正在设计一个在Android.When上使用NFC的应用程序--一个标签被读取,系统将一个Tag对象发送给一个活动。Tag对象是Parcelable对象。因为我想稍后根据用户设置在这个标签上编写,所以我需要以某种方式“缓存”这个对象。我想以后即使使用粘性广播来检索它,但从Lollipop开始,推荐使用粘性广播。另一种选择是在磁盘上保存,但正如docs所言,保存Parcelable不是件好事。如果我在文件中缓存对象,用户更改android版本,标记对象不同,那么就可能发生崩溃,那么问题就会发生。我只需要一个内存缓存,但在我看来,没有办法强迫Android保存内存缓存,我可以使用一个粘稠的服务,但是Android可以随时杀死我的服务。这种情况下最好的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-05 15:19:50

当读取标记时,系统将标记对象发送给活动。

对,是这样。在这一点上,这个活动和你的过程,在前景中。我们稍后再谈这个问题。

因为我想在后面的标签上写

没有“以后”的意义。您等待的每毫秒都是用户有机会将设备移出标记范围的毫秒,此时Tag对象是无用的。即使用户稍后将设备移回标记的范围,您也会得到一个新的Tag对象。

根据用户设置,我需要以某种方式“缓存”这个对象。

不怎么有意思。您只需要将Tag传递给任何需要它的人。它是一个Java对象,因此它可以作为参数传递给您需要的方法。它是Parcelable,所以您甚至不受Intent障碍的限制,因为您可以将Tag附加到Intent中。

即使是5秒也是个问题

是的,因为那时用户可能已经将他们的设备从标签移开了。

因为我不能传递标记对象“四处”。

是的,您可以,因为它是一个Java对象--请参阅前面的答案。

我只需要几秒钟的内存缓存

在5秒内,静态数据成员将正常工作。

但是Android没有提供任何工具来保存内存缓存

Android中的静态数据成员就像普通Java中的静态数据成员一样工作。

我猜你担心你的过程会被终止。正如在这个答案的顶部所指出的,当您获得Tag时,您的流程具有重要的前景。它不会被终止,直到用户做一些事情(例如,按下主页)将您的应用程序移到后台。您的后台进程有可能在5秒内终止。然而,如果用户决定离开您的应用程序,这将是一个信号,用户不想让您干扰NFC标记。

我们欢迎您使用服务来增加您的进程存活5秒的几率。此时,更有可能是用户在这5秒内从标记中删除了他们的设备,而不是在相同的5秒内结束您的后台进程。

就我个人而言,如果我试图编写一个使用NFC的应用程序,并且它是可靠的,我会在接收到Tag 后立即写信给。延迟意味着可能应用程序的可靠性会下降,更多的原因是用户的操作,而不是进程被终止。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29455881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档