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コードがあります:

         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

その問題の解決策を見つけました。共有設定を使用してタイマーの更新遅延を変更する場合は、run()別のメソッドを呼び出さずに、メソッドに対してサービス作業を行う必要があります。たとえば、コードでdo service work()メソッドを呼び出し、メソッド呼び出しを削除してこのメ​​ソッドのコードを直接配置すると、機能しました。私がそれを正しく説明したことを願っています。

于 2012-07-31T17:14:34.250 に答える