2016-04-16 4 views
1

У меня есть TextView, где я хочу установить сообщение в соответствии со временем (час дня). Для этого я использую:Показать сообщение По TIme

Thread t2 = new Thread() { 

     @Override 
     public void run() { 
      try { 
       while (!isInterrupted()) { 
        Thread.sleep(3600000); 
        handler.post(new Runnable() { 
         @Override 
         public void run() { 
         int hour=Calendar.getInstance().get(Calendar.HOUR_OF_DAY); 

          update(hour); 
         } 
        }); 
       } 
      } catch (InterruptedException e) { 
      } 
     } 


    }; 
t2.start(); 

, где обновление (час) используется для обновления сообщения.

Это прекрасно работает, однако обновление выполняется в зависимости от времени запуска. Например, сообщение должно обновляться в 20:00. Но если приложение запускается в 19:59, обновление происходит в 20:59.

Если я использую Thread.sleep(1000), он работает так, как ожидалось. Но я чувствую, что трачу ресурс, запуская поток каждую секунду, чтобы посмотреть событие в течение 1 часа. Есть ли лучший способ сделать это?

ответ

0

Наверняка вам нужно проверить текущее время, получить минуты после часа, а затем отработать оттуда, когда наступит следующий час 00. Затем, просто время сна для этих минут, затем на все часы после этого сна на полный час.

0

Посмотрите на AlarmManager.

Alarm Manager предназначен для случаев, когда вы хотите, чтобы ваш код приложения запускался в определенное время, даже если ваше приложение в настоящее время не работает.

Смежные вопросы