消息队列解决方案的活动来和去在Android上



假设我有一个服务S和活动a。S为a下载数据(或处理一些长时间运行的工作,无论如何),但a并不总是存在。我不希望S在它的作业队列为空时徘徊:S应该将完成工作的结果发布到a的某种邮箱中,以便a再次返回时可以提取消息。

不使用文件存储的SQLite来实现邮箱可以实现吗?我更喜欢一些更快的机制,在设备上写操作往往相当慢。我想过在ApplicationContext中使用一个简单的静态列表,但是依赖于ApplicationContext会导致一个危险/脆弱的解决方案。

谁能推荐一个模式来解决这个问题?

不使用文件存储的SQLite来实现邮箱可以实现吗?

不可靠。要么是个文件,要么在a回来之前就被销毁了。请记住,您的进程(所有静态数据成员和Application对象驻留在其中)不是永远存在的。一旦S关闭(这是一个的事情,谢谢!),Android是受欢迎的终止进程,把你的"邮箱"与你一起,如果它只是在RAM中。

你可以将它持久化到磁盘上,但保留一个单例或其他东西作为缓存,所以如果a很快返回,你可以跳过一些I/O。或者,如果A的消息是否存在并不重要,您可以将它们保存在RAM中,如果进程首先被终止,您只需耸耸肩。

最新更新