我有一个Android服务,即使活动已经关闭,也需要运行!
如果屏幕关闭,则服务无需执行任何操作。
如果屏幕开启,服务就会开始工作!
所以我的问题是,它更好删除所有处理程序回调(保持服务)或停止整个服务,当屏幕再次启动时启动服务?
谢谢!
答案 0 :(得分:2)
原则上,如果不需要它们,最好停止所有正在运行的服务。
从电池消耗方面来说 - 运行Service
本身对电池消耗没有任何重大影响,但只要您的服务仍然存在 - 您的整个过程仍然存在 - 这意味着您的应用仍然消耗RAM金额,并被视为“正在运行”。让我们说你的应用程序运行的事实本身也没有对电池寿命产生这样的影响。
但(并且有一个很大的但是)
什么是重要的,并且可能对电池寿命产生巨大影响您在服务中所做的事情。
从您的问题我可以假设您在某个时间间隔内执行某些代码,因此 - 您在每次执行CPU时消耗,甚至可能更糟糕 - 执行网络请求/执行IO文件操作强>等等。经常执行此类操作could drain very fast the battery,您应该尽可能地避免它们。
所以,如果你从我提到的操作中执行一个或多个操作 - 在屏幕关闭时不执行它们会更好,并且不仅忽略它们的回调......
我建议您观看整个视频 - http://www.youtube.com/watch?v=OUemfrKe65c
它会让你理解整个画面......
答案 1 :(得分:1)
如果您停止服务并在每个屏幕开/关事件上重新启动服务,那么系统将执行比保持活动状态和取消注册处理程序更多的工作。系统将需要重新创建服务,如果它有线程或缓存,也要重新创建它们等等。此外,如果你有前台服务,那么用户将看到服务图标出现并不断消失。
我会继续开始。只需删除所有处理程序,它就不会占用任何资源。
答案 2 :(得分:0)
Service的重点是它可以在后台运行,即使您的活动未显示或屏幕关闭时也是如此。如果服务没有做任何事情(在你的情况下,当屏幕关闭时),而不是没有消耗任何电池。
希望它有所帮助。