С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/55: Рейтинг темы: голосов - 55, средняя оценка - 4.87
 Аватар для ER_new
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 22

Как вызывать функцию каждую секунду?

10.04.2017, 00:19. Показов 11814. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый вечер. Помогите, пожалуйста решить следующую задачу.
Есть функция, которая переводит время в устный формат (да в общем не суть), сейчас ее вызов происходит по нажатию кнопки
Java
1
mBadClock.setText(getBadTime());
То есть время, обновляется только по нажатию кнопки. Как сделать обновление раз в секунду? Иначе говоря, как вызывать функцию заново, с интервалом в одну секунду? При этом, желательно, что бы TextView, который принимает значение времени от этой функции, был вроде как обособленной единицей и существовал сам по себе, тихонечко обновлялся и не мешал вызывать другие функции.
Спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.04.2017, 00:19
Ответы с готовыми решениями:

Как каждую секунду менять текст TextView?
Подскажите, пожалуйста, как каждую секунду в течение 1,5 минуты менять текст в TextView?

Каждую секунду отнимаются очки
Не могу понять в чем ошибка: private int x; private CountDownTimer countDownTimer; private int time = 0; ...

Как обновлять от <p> до </p> каждую секунду?
Доброе утро всем, есть страничка: &lt;html&gt; &lt;head&gt; &lt;meta name=viewport content='width=device-width, initial-scale=1'&gt; ...

9
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
10.04.2017, 06:48
ER_new, обновлять из хандлера посылая после обновления сообщение хандлеру отложенное на секунду

Добавлено через 43 секунды
... хотя можно наверное и самой компоненте слать без хандлера
0
 Аватар для ER_new
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 22
10.04.2017, 12:02  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
обновлять из хандлера
А можно подробнее? Я пока шланг
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
10.04.2017, 12:25
Лучший ответ Сообщение было отмечено ER_new как решение

Решение

Java
1
2
3
4
5
6
7
8
9
Handler h = new Handler();
   Runnable run = new Runnable() {
 
        @Override
        public void run() {
           textview.setText("bla bla bla");
           h.postDelayed(this, 1000);
        }
    };
2
0 / 0 / 0
Регистрация: 10.04.2017
Сообщений: 4
10.04.2017, 15:34
Здравтствуй, используй AsyncTusk или Thread, и задавай интервал ожидания в 1 с.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
10.04.2017, 15:53
Цитата Сообщение от Riards Посмотреть сообщение
Здравтствуй, используй AsyncTusk или Thread, и задавай интервал ожидания в 1 с.
совет - отстой

ExFau$t все верно предлагает
0
 Аватар для ER_new
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 22
10.04.2017, 16:43  [ТС]
Да, почти то что мне нужно, на основе предложенного, смог сделать то что нужно.
Спасибо большое
Если не затруднит, не могли бы Вы пояснить еще кое что. Вот как сделал я
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private Handler mHandler = new Handler();
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mBadClock = (TextView)findViewById(R.id.badClock);
 
        mHandler.removeCallbacks(badTimeUpdater);
        mHandler.postDelayed(badTimeUpdater, 100);
        }
 
        private Runnable badTimeUpdater = new Runnable() {
        @Override
        public void run() {
            mBadClock.setText(getBadTime());
            mHandler.postDelayed(this, 1000);
        }
    };
1. Правильно ли я понимаю, что был создан поток, для фонового обновления TextView?

2. Почему два раза мы вызываем метод postDelayed? (в onCreate и в run)

3. Нужно ли описывать методы onPause и onResume, или можно обойтись без них?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
10.04.2017, 16:56
Грубо говоря, в onCreate ты даёшь задание, оно выполняется и в конце опять вызывает само себя через секунду. Логично предположить, что в погасшем экране тебе не нужно обновлять textview, соответственно в onPause надо убрать, в onResume восстановить, опять же, грубо говоря.
1
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
10.04.2017, 16:57
Цитата Сообщение от ER_new Посмотреть сообщение
1. Правильно ли я понимаю, что был создан поток, для фонового обновления TextView?
нет, handler в данном случае привязан к UI потоку, просто на 1 сек мы откладываем какое-то действие без блокирования UI потока
Цитата Сообщение от ER_new Посмотреть сообщение
2. Почему два раза мы вызываем метод postDelayed? (в onCreate и в run)
так это у тебя надо спросить, почему два раза
первый раз можно просто post написать, тогда первый раз отработает без задержки
Цитата Сообщение от ER_new Посмотреть сообщение
3. Нужно ли описывать методы onPause и onResume, или можно обойтись без них?
в данном примере нет
1
 Аватар для ER_new
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 22
10.04.2017, 17:03  [ТС]
Всем спасибо, все понял
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.04.2017, 17:03
Помогаю со студенческими работами здесь

Как выполнять операцию каждую секунду?
Мне нужно, что б мое консольное приложение запускалось и за все время работы выполняло бы одну операцию каждую секунду.

Как сделать обновление страницы каждую секунду
Я короче хочу чтобы обновлялась страничка каждую секунду и в JLabel'е менялась значение (ну тут 10 9 8 .... 0) import java.awt.*; ...

Как запустить метод каждую секунду времени?
Здравствуйте! Есть метод, который нужно запускать каждую секунду локального времени компьютера. Вроде бы сразу напрашивается таймер...

Каждую секунду по 1-3 пользователю - как они это сделали?
Всем привет. Каждую секунду по 1-3 пользователю, как сделать типа такого? Можно код. Спасибо http://mdk.is/

Как сделать чтобы время обновлялось каждую секунду?
Вот код моих часов Date d = new Date(); SimpleDateFormat format1 = new SimpleDateFormat(&quot;hh:mm&quot;); ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru