2013-02-13 126 views
1

在我的應用程序的大部分活動中都有一個標籤 - 空氣流標題。基本上,我需要在廣播結束並且另一個開始時更新它,並且我有計劃。我可以以固定的速度更新數據,比如說每分鐘一次,但是我發現它太多了。定期更新標籤

我想安排特定時刻的更新;每次更新後,我需要安排下一個更新。廣播在時間範圍上有所不同。

這個問題最適合什麼? Handler.postDelayed,ScheduledExecutorService.schedule還是別的? AlarmManager可能是一種矯枉過正,因爲如果應用程序沒有運行,我不需要更新任何數據。

p.s.時間範圍並不固定,所以我必須在每次更新時更改計劃時間。

謝謝。

回答

2

我會說使用Handler.postDelayed是一個更好的選擇,因爲你可以改變延遲。使用任何類型的定時器與「變長」要求相沖突。

+0

如果時間範圍不固定,那麼'Handler.postDelayed'是更好的選擇。 – 2013-02-13 09:31:36

+0

處理程序**總是** Android的更好的選擇,因爲計時器不是正式支持(或者更確切地說,不推薦) – 2013-02-13 09:36:55

+0

有Android CountDownTimer,這很好,但不是這個問題。 – Shade 2013-02-13 10:25:48

0

那麼我猜Timer是這種情況下的最佳選擇。與TimerTask一起使用。

+0

並且你最好使用固定週期執行而不是固定速率執行。 – 2013-02-13 09:26:30

0

可以使用線程定期在這裏更新數據此線程將2秒運行,通過調用這個函數內循環可以定期更新的東西

Strinh hello="HI"; 
    final int _splashTime = 2000; // time to display the splash screen in ms 

    Thread splashTread = new Thread() { 
     @Override 
     public void run() { 
      try { 
       int waited = 0; 
       while(_active && (waited < _splashTime)) { 
        sleep(100); 
        if(_active) { 
         waited += 100; 
        }      
       } 

      } 
      catch(InterruptedException e) { 
      } 
      finally { 
       finish(); 
       hello="HI2"; 
       stop(); 
      } 
     } 
    }; 
    splashTread.start(); 

這裏字符串hello將從HI在改變HI2 2秒

希望這可以幫助你