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

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

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

Всем добрый вечер. Помогите, пожалуйста решить следующую задачу.
Есть функция, которая переводит время в устный формат (да в общем не суть), сейчас ее вызов происходит по нажатию кнопки
Java
1
mBadClock.setText(getBadTime());
То есть время, обновляется только по нажатию кнопки. Как сделать обновление раз в секунду? Иначе говоря, как вызывать функцию заново, с интервалом в одну секунду? При этом, желательно, что бы TextView, который принимает значение времени от этой функции, был вроде как обособленной единицей и существовал сам по себе, тихонечко обновлялся и не мешал вызывать другие функции.
Спасибо!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2017, 00:19
Ответы с готовыми решениями:

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

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

Уменьшение прогресс бара до нулевого значения каждую секунду
Добрый вечер, господа. Каким образом можно выполнить эту задачу?

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

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

9
vxg
Модератор
3281 / 2077 / 328
Регистрация: 13.01.2012
Сообщений: 8,071
10.04.2017, 06:48 2
ER_new, обновлять из хандлера посылая после обновления сообщение хандлеру отложенное на секунду

Добавлено через 43 секунды
... хотя можно наверное и самой компоненте слать без хандлера
0
ER_new
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 22
10.04.2017, 12:02  [ТС] 3
Цитата Сообщение от vxg Посмотреть сообщение
обновлять из хандлера
А можно подробнее? Я пока шланг
0
ExFau$t
726 / 600 / 148
Регистрация: 08.05.2012
Сообщений: 2,924
10.04.2017, 12:25 4
Лучший ответ Сообщение было отмечено 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
Riards
0 / 0 / 0
Регистрация: 10.04.2017
Сообщений: 4
10.04.2017, 15:34 5
Здравтствуй, используй AsyncTusk или Thread, и задавай интервал ожидания в 1 с.
0
Pablito
2821 / 2241 / 758
Регистрация: 12.05.2014
Сообщений: 7,842
Завершенные тесты: 1
10.04.2017, 15:53 6
Цитата Сообщение от Riards Посмотреть сообщение
Здравтствуй, используй AsyncTusk или Thread, и задавай интервал ожидания в 1 с.
совет - отстой

ExFau$t все верно предлагает
0
ER_new
1 / 1 / 0
Регистрация: 12.01.2017
Сообщений: 22
10.04.2017, 16:43  [ТС] 7
Да, почти то что мне нужно, на основе предложенного, смог сделать то что нужно.
Спасибо большое
Если не затруднит, не могли бы Вы пояснить еще кое что. Вот как сделал я
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
ExFau$t
726 / 600 / 148
Регистрация: 08.05.2012
Сообщений: 2,924
10.04.2017, 16:56 8
Грубо говоря, в onCreate ты даёшь задание, оно выполняется и в конце опять вызывает само себя через секунду. Логично предположить, что в погасшем экране тебе не нужно обновлять textview, соответственно в onPause надо убрать, в onResume восстановить, опять же, грубо говоря.
1
Pablito
2821 / 2241 / 758
Регистрация: 12.05.2014
Сообщений: 7,842
Завершенные тесты: 1
10.04.2017, 16:57 9
Цитата Сообщение от 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  [ТС] 10
Всем спасибо, все понял
0
10.04.2017, 17:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2017, 17:03

Как сделать обновление страницы каждую секунду
Я короче хочу чтобы обновлялась страничка каждую секунду и в JLabel'е менялась значение (ну тут 10...

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

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


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

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

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