用于轮询的线程与处理程序

时间:2015-06-10 16:50:36

标签: android multithreading handler polling battery

我需要一个轮询线程来每5分钟执行一些网络操作。我想出了以下两个解决方案。哪个更好,为什么?我希望有最低的CPU和电池使用率。

pollThread = new Thread(){
      public void run(){
          while(toggle) {
              // Do stuff
              sleep(FIVE_MINUTES);
          }
      }
};
pollThread.start();

OR

Runnable doStuffRunnable = new Runnable() {
     @Override
     public void run() {
         // Do stuff
         handler.postDelayed(this, FIVE_MINUTES);
     }
}

1 个答案:

答案 0 :(得分:0)

答案取决于您是否使用处理程序来处理其他任务。如果没有,那就不会有太大差别;仍然会有一个线程每隔5分钟醒来就能做你想做的事。如果处理程序还处理其他任务,那么使用处理程序可能比为每个任务设置单独的线程更有效,因为它只需要一个线程,并且可能在处理器使用方面有优化。