2011-08-05 29 views
0

我想在我的服務中重新啓動我的TimerTask,當時我在配置Activity中更改了刷新時間。在服務中重新啓動TimerTask的最佳方式

的配置活動改變了公共靜態更新週期長

你有我的一些想法?

public void onStart(Intent intent, int startId) { 

    // init the service here 
    try { 
     if (prefs.getString("oauth_token_secret", null) != null) { 
      _startService(); 
     } 
     } catch (Exception e) { 
      Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); 
     } 

} 

private void _startService() { 

    timer.scheduleAtFixedRate(
     new TimerTask() { 
     public void run() { 

      //doing things 

     } 
     }, 0, UPDATE_INTERVAL); 

} 

到目前爲止感謝。 Stefan

回答

0

不確定您的意思是「配置活動更改公共靜態long UPDATE_INTERVAL」,但您可以更新運行代碼中的時間間隔,並且它將在下次運行TimerTask時生效。或者,如果您的活動處於單獨的課程中,您可以爲UPDATE_INTERVAL創建一個setter,並且在Activity中觸發某個操作時,您可以通過這種方式設置時間間隔。

+0

我試過這個,但它只需要在第一次設置的UPDATE_INTERVAL的值=/ – Stefan

+0

而不是使用scheduleAtFixedRate(),你應該只使用schedule(),並遞歸地調用函數,以便它會創建一個新計時器每次迭代更新的時間間隔。 –

相關問題