Android:更改在后台运行的服务的更新间隔

时间:2012-07-26 13:42:45

标签: android service sharedpreferences

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

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

1 个答案:

答案 0 :(得分:0)

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