На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Hsilgos
  
> Android Service and scheduleAtFixedRate()
    Привет, уважаемые форумчане.
    Разрабатываю приложение для Android. Есть сервис, который должен периодически выполнять опрпеделенное действие (отправка данных на сервер)
    Для этого в сервисе запускаю метод scheduleAtFixedRate у Timer
    Сервис стартует нормально, но через некоторое время случается так, что задания выполняются не согласно таймеру, а форсировано. То есть, необходимо его выполнить раз, например, в 10 минут, а происходит так, что на протяжении часа приложение молчит, а затем выполняет такс сразу 10 раз.
    ExpandedWrap disabled
      public class MyService extends Service {
       
       
          public static final long NOTIFY_INTERVAL = 10 * 1000 * 60; // 1 minutes
       
          private Handler mHandler = new Handler();
       
          private Timer mTimer = null;
       
          @Override
          public IBinder onBind(Intent intent) {
              return null;
          }
       
          @Override
          public void onCreate() {
              // cancel if already existed
              if(mTimer != null) {
                  mTimer.cancel();
              } else {
                  // recreate new
                  mTimer = new Timer();
              }
              // schedule task
              mTimer.scheduleAtFixedRate(new MyTimerTask(), 0, NOTIFY_INTERVAL);
              instance = this;
          }
       
          @Override
          public void onStart(Intent intent, int startId) {
              super.onStart(intent, startId);
          }
       
          private class MyTimerTask extends TimerTask {
       
              @Override
              public void run() {
       
                  mHandler.post(new Runnable() {
       
                      @Override
                      public void run() {
                          // my sheduled task here
                      }
       
                  });
              }
       
          }
       
       
      }

    кто нибудь сталвивался с подобной проблеммой?
    Или это пробеммы с конкретным аппаратом?
      с AlarmManager вместо таймера не пробовал?
        Спасибо. Ага, днем смотрел про него (и еще про ScheduledExecutorService). Сейчас добрался до исходников. Попробую.
          AlarmManager заработал очень четко. С точностью до нескольких секунд. Отработал всю ночь без каких-либо фокусов. Так что спасибо

          Добавлено
          но что с scheduleAtFixedRate не понятно.
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0194 ]   [ 15 queries used ]   [ Generated: 19.04.24, 10:46 GMT ]