线程和电池消耗

我正在开发应用程序,每5秒检查一次电话的状态。 我做到了这一点:

Thread checking = new Thread() { public void run(){ while( <<some status>> ) { <<checkstatus and do something>> Thread.sleep(5000); } } } 

这对电池不好? 我怎样才能做到这一点呢? 服务几秒钟后停止工作。

Solutions Collecting From Web of "线程和电池消耗"

要回答你的问题,这取决于你在while循环内做什么。

如果你不使用和唤醒任何“昂贵”的组件(如互联网,蓝牙,其他传感器和屏幕),你应该没问题。 本质上,这是操作系统如何在后台工作,使用线程是最便宜的方法之一。

另外,如果你的任务是CPU密集型的,你也会耗尽电池。

如果你做得对,你的服务应该可以正常工作。

另一种方法是使用处理程序,它将为您抽取大部分的线程pipe理。

Thread.sleep()使当前线程挂起,这意味着CPU将可用于其他线程或将简单地closures。 还请注意睡眠力量上下文切换,但是您在安全的一面睡眠时间很长。 所以,一般来说,一切都取决于你。

例如,您可以使用PowerTutor来确保您的应用程序已正确devise和实施。