在花了很多时间试图找出使用服务执行我的后台任务而不是简单的单例类到底有什么优势之后,我似乎找到的唯一具体答案是仅仅存在 已启动的服务将使系统不太可能终止我的进程。
如果是这种情况,那么除了启动和停止它以表明我不希望我的进程在特定时间被终止之外,还有什么理由实际使用服务的任何功能?与其处理绑定(bind)到服务等的麻烦,不如将简单的单例与“setPleaseDontKillMyProcessIfYouCanHelpIt(boolean)”方法结合使用,以适本地启动和停止虚拟服务?同样,我没有使用进程间通信,因此这里不考虑该功能。
我知道有用户问了类似的问题 here ,但他没有得到一个直接的答案,只是重申了一个事实,即启动的服务不鼓励系统杀死你的应用程序(并建议他“正确使用服务”而不是使用单例和虚拟服务,但没有任何消息至于为什么)。
提前感谢您的任何回答。这是我第一次使用 StackOverflow,所以如果我违反了任何礼仪规则,请告诉我。
最佳答案
我也在想办法解决这个问题。服务,您可能需要考虑几件事:
- 允许您使用 Intents 进行松散耦合(您可以限制 Activity 和服务之间的整个通信过程 仅用于 Intent )
- 可以处理由 BroadcastReceivers 转发的 intents (例如 TIMEZONE_CHANGED)
- 允许您将操作移出主 线程,如果它们变得耗时
- 让您了解 应用程序生命周期 - 服务在创建或创建时获取回调 停止
将服务视为没有 GUI 的 Activity 。它也是一个生命周期管理的对象,它可以访问你的单例。
关于Android:当我不使用 IPC 时,为什么要以虚拟容量使用服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11781347/