【发布时间】:2014-03-13 12:54:04
【问题描述】:
我有一个 android 服务需要运行,即使活动已关闭!
如果屏幕关闭,服务不需要做任何事情。
如果屏幕开启服务开始工作!
所以我的问题是,最好删除所有处理程序回调(保持服务)或停止整个服务,然后屏幕重新启动服务?
谢谢!
【问题讨论】:
标签: android service handler battery
我有一个 android 服务需要运行,即使活动已关闭!
如果屏幕关闭,服务不需要做任何事情。
如果屏幕开启服务开始工作!
所以我的问题是,最好删除所有处理程序回调(保持服务)或停止整个服务,然后屏幕重新启动服务?
谢谢!
【问题讨论】:
标签: android service handler battery
原则上,如果不需要,最好停止所有正在运行的服务。
从电池消耗方面 - 运行Service 本身对电池消耗没有任何显着影响,但只要您的服务仍然存在 - 您的整个进程仍然存在 - 这意味着您的应用仍然消耗 RAM 量,并被视为“正在运行”。假设您的应用程序正在运行这一事实本身也不会对电池寿命产生这种影响。
但是(还有一个很大的但是)
重要且可能对电池寿命产生巨大影响的是您在服务中所做的事情。
根据您的问题,我可以假设您在某个时间间隔内执行一些代码,因此 - 您在每次执行 CPU 时间时都在消耗,甚至可能更糟 - 执行网络请求/执行 IO 文件操作强>等。经常执行此类操作could drain very fast the battery,您应该尽可能避免它们。
所以,如果您执行我提到的操作中的一项或多项 - 最好不要在屏幕关闭时执行它们,并且不仅忽略它们的回调...
我建议你也观看整个视频 - http://www.youtube.com/watch?v=OUemfrKe65c
它会让你了解整个画面......
【讨论】:
如果您在每个屏幕开/关事件中停止服务并重新启动服务,那么系统将执行比您保持激活和取消注册处理程序更多的工作。系统需要重新创建服务,如果它有线程或缓存,也需要重新创建这些等等。此外,如果你有前台服务,那么用户会看到服务图标不断出现和消失。
我会保持它的开始。只需删除所有处理程序,它不会消耗任何资源。
【讨论】:
Service 的全部意义在于它可以在后台运行,即使您的活动未显示或屏幕关闭时也是如此。如果服务没有做任何事情(在你的情况下,屏幕关闭时),那么它不会消耗任何电池。
希望对你有帮助。
【讨论】: