Android 用下面的方法检查小时是不是好主意?

Android 用下面的方法检查小时是不是好主意?,android,android-service,Android,Android Service,我想做的服务,将检查更新每2小时。 按照下面的方法做是个好主意吗 boolean canceled = false; public void onCreate() { super.onCreate(); final Calendar c = Calendar.getInstance(); new Thread(new Runnable() { public void run() { w

我想做的服务,将检查更新每2小时。 按照下面的方法做是个好主意吗

boolean canceled = false;
    public void onCreate() {
        super.onCreate();
        final Calendar c = Calendar.getInstance();
        new Thread(new Runnable() {
            public void run() {
                while (!canceled) {
                    int hour = c.get(Calendar.HOUR_OF_DAY);
                    if (hour % 2 == 0) {
                        checkForUpdate();
                    }
                }
            }
        }).start();
    }

IMO最好的方法是使用ScheduledExecutorService,它将每2小时执行一次线程:

ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(5);

scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
  public void run() {
    checkForUpdate();
  }
}, 0, 2, TimeUnit.HOURS);

当然你应该使用and。这两种方法更节省兵力,也更灵活。你所需要做的就是设置警报并处理你的意图

如果您使用AlarmManager类来设置时间广播,它将对电池更加友好。这将只运行一次execute,因为您创建的线程没有循环。请改用AlarmManager。您可以使用Timer my friend。第一:使用AlarmManager第二:它不工作。创建服务时,线程只执行代码一次。