Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Max_92
25 / 7 / 1
Регистрация: 26.04.2010
Сообщений: 219
1

Неправильная периодичность вызова метода по таймеру

25.01.2014, 17:06. Просмотров 842. Ответов 1
Метки нет (Все метки)

Есть необходимость запускать некую задачу в фоне по таймеру. Для этого я использовал следующий код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 //обновление по таймеру
       Timer myTimer = new Timer(); // Создаем таймер
       final Handler uiHandler = new Handler();
       //final TextView txtResult = (TextView)findViewById(R.id.txtResult);
       myTimer.schedule(new TimerTask() { // Определяем задачу
           @Override
           public void run() {
               i++;
               //Toast.makeText(mContext, Integer.toString(i), Toast.LENGTH_SHORT).show();
               uiHandler.post(new Runnable() {
                   @Override
                   public void run() {
                       //txtResult.setText(result);
                       UpdateNews(enableNotifications, i);
                   }
               });
           };
       }, 0L, INTERVAL); // интервал, 0 миллисекунд до первого запуска.
Собсно, проблема в том, что UpdateNews() запускается гораздо чаще чем надо, вне зависимости от значения переменной INTERVAL (например, 5000 мс), которое я меняю на PreferenceActivity. Это видно по всплывающим сообщениям. Но её изменение, как мне кажется, влияет на задержку запуска. Так как правильно юзать этот таймер?

Добавлено через 1 минуту
если поменять аргументы INTERVAL и 0L местами, приложение крэшится сразу же при старте MainActivity

Добавлено через 3 минуты
Проблема скорее всего в том, что TimerTask стартует с заданным значением один раз и дальнейшие изменения переменной INTERVAL не влияют на периодичность. Как сделать, чтобы эти изменения применялись "на лету"
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2014, 17:06
Ответы с готовыми решениями:

Вызова метода по таймеру
Есть рабочий метод, реализовывающий изменение TextView по таймеру. Скопипастил его же, но для...

Вызов метода по таймеру
Здравствуйте, подскажите пожалуйста, почему при повторном нажатии таймер не срабатывает? ...

Создать процедуру stop() для предотвращения вызова макроса по таймеру
Dim intAddress As Integer Sub MovingString() Cells(1, intAddress).Value = "" If intAddress > 1...

Сбой вызова метода из-за отсутствия в [System.Object[]] метода с именем "op_Division"
При разборе скрипта, найденного на просторах интернета (Создание пользовательского объекта),...

Неправильная работа метода DrawPoligon
Нужно нарисовать 6-ти угольную звездочку. Её я рисую по 2 6-ти угольникам. Но у меня возникли...

1
YuraAAA
1601 / 1333 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
25.01.2014, 17:12 2
Max_92,
Цитата Сообщение от Max_92 Посмотреть сообщение
Проблема скорее всего в том, что TimerTask стартует с заданным значением один раз и дальнейшие изменения переменной INTERVAL не влияют на периодичность. Как сделать, чтобы эти изменения применялись "на лету"
Убивать TimerTask и пересоздавать её.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2014, 17:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Запуск метода по таймеру в отдельном потоке
Доброго времени суток! Господа знатоки помогите начинающему. Есть метод получения почты public...

Вызов метода по таймеру (каждые 5 секунд)
Здравствуйте. У меня есть консольное приложение. Каждые 5 секунд должен вызываться метод Live...

Php, Неправильная работа метода post
Здравствуйте. Недавно начал изучать php, возникла такая проблема: 1)создал файл new 1.html:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.