2016-04-16 7 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

確かに、現在の時刻を確認し、1時間後に分を取得し、次の時00が来るとそこから解決する必要があります。その後、その分の時間だけ眠り、その後1時間の睡眠後のすべての時間。

0

AlarmManagerをご覧ください。

アラームマネージャは、アプリケーションが現在実行されていなくても、特定の時刻にアプリケーションコードを実行したい場合に使用します。

関連する問題