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

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

25.01.2014, 17:06. Просмотров 788. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2014, 17:06
Ответы с готовыми решениями:

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

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

Артефакт при осуществлении первой попытки обратного вызова для метода onAccessibilityStateChanged
Я использую в своем приложении функциональность, связанную с дополнительными...

Метод фрагмента onResume() перестает вызываться после вызова метода recreate() для Activity
Такая проблема:после вызова метода recreate() методы фрагментов onCreate() and...

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

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

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

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

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


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

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

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