【发布时间】:2014-02-24 05:40:11
【问题描述】:
在我的应用程序中,我有一组动态(即不能硬编码到服务操作)定义IntentService 如何处理其输入。
我的基本问题是,每次将Intent 传递给Service 时,我不想从它们的XML 文件中加载这些Definition 结构,而是将它们保存在内存中(因为它们又小又快访问是可取的,因为该服务经常被调用)并使用位于 RAM 中的 Definitions 来处理 Intents,因为 Service 接收它们。
从逻辑上讲,我能想到的只是一个永久的背景Service,有大量消息来源说这是一个坏主意(我同意)。
我想基本上我正在寻找的是一种将这些数据存储在 RAM 中直到需要它的方法(就像 Android 对打开的应用程序、启动器等所做的系统一样),并且不会对电池寿命产生任何不利影响(即Service什么都不做,只是将数据保存在 RAM 中直到被调用),但在我的 Service 被调用时可用?
是否有任何可能的方法可以实现这一点,或者我必须非常小心地管理的唯一选项是永久的Service?
如果一个永久的Service 是答案,那么IntentService(配置为START_STICKY)会不会只停留在RAM 中并且在通过Intent 之前不会影响电池寿命?
【问题讨论】:
-
在android中没有真正的永久后台服务。请记住,它首先是电话,因此当电话响起并且内存不足时,包括前台服务在内的任何服务都可能被终止。这种设计是有意的,否则服务可能会占用所有内存,您的手机就会变成智能砖。
-
好点,我想我只是在我的脑海中永久缓存几 kB 的手机内存以延长持续时间以换取始终快速的快速响应似乎是一个值得的权衡。但我想如果所有应用都这样做,那么“自私”的方法并不适用。
标签: java android android-service