2010-10-31 98 views
0

我在我的Android應用程序中使用計時器的服務類。計時器設置爲延遲1分鐘(60000毫秒)。我希望用戶能夠動態地改變這種延遲。通常,在java中我可以使用timer.setDelay();但Android沒有這個功能。Android定時器設置延遲

public class LocalService extends Service 
{ 
    Timer timer = new Timer(); 
    int newDelay; 

    public IBinder onBind(Intent arg0) 
    { 
     return null; 
    } 

    public void onCreate() 
    { 
     super.onCreate(); 
     startService(); 
    } 

    private void startService() 
    {  
     timer.scheduleAtFixedRate(new TimerTask() 
     { 
      public void run() 
      {  
       mainTask(); 
      } 
     }, 0, 60000); 
    } 

    private void mainTask() 
    { 
     //do something 
    } 

    private void shutdownService() 
    { 
     if (timer != null) timer.cancel(); 
    } 

    public void onDestroy() 
    {  
     super.onDestroy(); 
     shutdownService(); 
    } 

    private void readNewDelay() 
    { 
     InputStream in = openFileInput("updateDelay"); 
     if(in != null) 
     { 
      InputStreamReader input = new InputStreamReader(in); 
      BufferedReader buffreader = new BufferedReader(input); 
      newDelay = Integer.parseInt(buffreader.readLine()) * 60000; //value in file is saved in minutes 
     }  
     in.close(); 
    } 
} 

我想通過活動保存到一個文本文件中的延遲:

服務類爲止。然後我希望該服務讀取此文件並相應地更新其定時器延遲。

回答

1

您必須銷燬計時器對象並創建一個新對象。

不要忘記,定時器不會在手機休眠時運行。更好的方法是使用警報而不是定時器。