2012-07-26 82 views
0

我有一個服務運行,每x分鐘更新數據,我希望用戶選擇更新頻率(每10分鐘,30分鐘...)。我使用了sharedpreferences,但似乎該服務不會更改更新的頻率。 這裏是我的服務代碼:Android:更改在後臺運行的服務的更新間隔

public void onCreate() 
    { 

     super.onCreate();  

     _startService(); 

    // if (MAIN_ACTIVITY != null) Log.d(getClass().getSimpleName(), "FileScannerService started"); 
    } 
    /* 
    * starting the service 
    */ 
    private void _startService() 
    { 

     timer.scheduleAtFixedRate( 

       new TimerTask() { 

        public void run() { 

         try{ 

         doServiceWork(); 

         Thread.sleep(UPDATE_INTERVAL); 

         }catch(InterruptedException ie){ 

          Log.e(getClass().getSimpleName(), "FileScannerService InterruptedException"+ie.toString()); 
         } 

        } 
        }, 
        DELAY_INTERVAL, 
        UPDATE_INTERVAL); 

     Log.i(getClass().getSimpleName(), "FileScannerService Timer started...."); 
    } 

這裏是我的sharedpreferences代碼:

  SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
    String interval= SP.getString("synchronisation", "1"); 
    if(interval.equals("1")) UPDATE_INTERVAL= 30000; 
    if(interval.equals("2")) UPDATE_INTERVAL= 60000; 
    if(interval.equals("3")) UPDATE_INTERVAL= 120000; 

我試圖處處把sharedpreferences代碼在我的服務方法,但它不能正常工作。也許我錯了。 在此先感謝您的幫助。

+0

您可能想要使用[AlarmManager](http://developer.android.com/reference/android/app/AlarmManager.html#setInexactRepeating%28int,%20long,%20long,%20android.app.PendingIntent%29 ),因爲它專門設計用於安排Android中的事物。 – wsanville 2012-07-26 13:50:40

+0

而不是timerTask,它不是一回事,因爲定時器中有一個update_interval? – 2012-07-26 13:53:06

回答

0

我發現這個問題的解決方案,如果你使用sharedpreferences來改變計時器的更新延遲,你應該使你的服務工作於run()方法而不是調用另一個方法。例如:在我的代碼中,我調用了方法do service work(),當我刪除方法調用並直接使用此方法的代碼時,它就起作用了。 希望我解釋得對。