我正在开发应用程序,每5秒检查一次手机状态。 我这样做了:
Thread checking = new Thread() {
public void run(){
while( <<some status>> ) {
<<checkstatus and do something>>
Thread.sleep(5000);
}
}
}
这对电池有害吗? 我怎么能以其他方式做到这一点?几秒钟后服务停止工作。
答案 0 :(得分:5)
要回答你的问题,这取决于你在while循环中做了什么。
如果您没有使用和唤醒任何“昂贵”的组件(如互联网,蓝牙,其他传感器和屏幕),您应该没问题。基本上这就是操作系统在后台运行的方式,使用线程是最便宜的方法之一。
此外,如果您的任务是CPU密集型的,您也会耗尽电池电量。
如果你做得对,你的服务应该可以正常工作。
另一种方法是使用Handler,它将为您抽象大部分线程管理。
答案 1 :(得分:2)
Thread.sleep()使当前线程挂起,这意味着CPU可用于其他线程或者只是关闭。请注意睡眠力量上下文切换,但你是安全的,睡眠间隔很大。所以,一般来说,一切都取决于你。
您可以使用PowerTutor来确保您的应用程序设计和实施得当。