2016-04-16 61 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适用于希望在特定时间运行应用程序代码(即使您的应用程序当前未运行)的情况。