线程和电池消耗

时间:2012-10-08 21:10:36

标签: android thread-sleep

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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

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

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

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

答案 1 :(得分:2)

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

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