На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania 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 вместо таймера не пробовал?
      user posted image
        Спасибо. Ага, днем смотрел про него (и еще про ScheduledExecutorService). Сейчас добрался до исходников. Попробую.
        Если отладка - процесс удаления ошибок, то программирование должно быть процессом их внесения. (с)
          AlarmManager заработал очень четко. С точностью до нескольких секунд. Отработал всю ночь без каких-либо фокусов. Так что спасибо

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


          Рейтинг@Mail.ru
          [ Script Execution time: 0,0717 ]   [ 15 queries used ]   [ Generated: 26.09.17, 05:48 GMT ]