0

我有一项服务正在运行,每 x 分钟更新一次数据,我希望用户选择更新频率(每 10 分钟、30 分钟......)。我使用了 sharedpreferences 但似乎该服务不会改变更新的频率。这是我的服务代码:

 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 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 代码放在我的服务方法中的任何地方,但它不起作用。也许我走错路了。提前感谢您的帮助。

4

1 回答 1

0

我找到了解决该问题的方法,如果您使用 sharedpreferences 来更改计时器的更新延迟,您应该对run()方法进行服务工作,而不是调用其他方法。例如:在我的代码中,我调用了该方法do service work(),当我删除方法调用并将该方法的代码直接放入时,它就起作用了。希望我解释得对。

于 2012-07-31T17:14:34.250 回答