线程和电池消耗

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

Thread checking = new Thread() { public void run(){ while( <> ) { <> Thread.sleep(5000); } } } 

这对电池有害吗? 我怎么能以其他方式做到这一点? 几秒钟后服务停止工作。

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

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

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

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

    另一种方法是使用Handler,它将为您抽象大部分线程管理。

    Thread.sleep()使当前线程挂起,这意味着CPU可用于其他线程或者只是关闭。 还请注意睡眠力量上下文切换,但您在安全方面有很大的睡眠间隔。 所以,一般来说,一切都取决于你。

    例如,您可以使用PowerTutor来确保您的应用程序设计和实施得当。