Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
psinetron
8 / 8 / 2
Регистрация: 24.01.2012
Сообщений: 59
#1

Handler и интервал времени - Программирование Android

01.11.2012, 18:12. Просмотров 1697. Ответов 4
Метки нет (Все метки)

Создаю хэндлер:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Handler h = new Handler();
h.post(obrtimer);
 
Runnable obrtimer = new Runnable() {
    
    public void run() {
        if (secnd<0) {secnd=59; mint--;}
        TextView tmtext = (TextView) findViewById(R.id.retroTime1);
        tmtext.setText("0" + mint + ":" + secnd);
        secnd--;
        h.postDelayed(obrtimer, 1000);
        
    }
};
Это обычный таймер обратного отсчета. В теории должен обновляться каждую секунду. На практике - время идет не с той скоростью, с которой оно должно идти. На эмуляторе оно запаздывает примерно на 3 секунды в минуту. В принципе в моем случае не слишком страшно. А вот запустил на телефоне, и время идет быстрее. За минуту хэндлер отсчитал 62 секунды. при том, что телефон не самый быстрый. Не получится ли так, что на каком-нибудь 6 ядерном телефоне время пройдет еще быстрее? Почему вообще такая разница? Есть ли варианты точного задания интервалов выполнения кода?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2012, 18:12     Handler и интервал времени
Посмотрите здесь:

Handler - Программирование Android
import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import...

Handler - Программирование Android
Вот допустим обьект Handler был создан в активити(то есть в главном потоке). И мы запускаем через этот Handler (его метод post) кусок кода...

Не работает Handler - Программирование Android
Я нахожусь на 66 уроке startandroid, здесь упоминается Handler. Почему то отсутствуют у меня методы, которые описываются тут. Вот фрагмент...

Handler timer - Программирование Android
Добрый вечер. С помощью какого метода в Handler http://developer.android.com/reference/android/os/Handler.html(беда пока с английским) ,...

Handler, поток не останавливается - Программирование Android
Добрый вечер. Не могу остановить таймер, при переходе на другую Activity. Возможно ли это вообще? Code: mport...

Про Handler и ProgressBar - Программирование Android
Есть 2 кнопки - Start и Stop, соответственно запуск и остановка прогресса в ProgressBar, запуск каждый раз идет с нуля. Если нажать...

Handler vs Service vs AsynkTask - Программирование Android
Есть 2 Activity, пусть A1 и A2. В методе onCreate() Activity A1 запускается новый поток, в котором определяются координаты местоположения...

Работа с Handler из другого активити - Программирование Android
Здравствуйте, пишу чат приложение и не могу понять как можно обрабатывать входящие сообщение из другого активити. У меня есть форма...

Handler при пересоздании активити - Программирование Android
У меня есть поток Thread, который запускается во фрагменте и получает ссылку на изображение с сервера(парсит JSON выделяет ссылку). И...

Передача сообщения из потока. Handler - Программирование Android
Добрый день, пытаюсь передать сообщение через Handler из потока, для обновления textView, но программа вылетает при присвоении значения...

Потоки (Handler внутри synchronized) - Программирование Android
private Handler Ocnova = new Handler(); private Object sync = new Object(); class newThread extends Thread { //...String mes..... ...

Потокобезопасный вызов процедур через Handler - Программирование Android
Пытаюсь написать потокобезопасные сообщения через через Handler. Примерно это выглядит ТАК: private static Handler Tread1_Handler...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
01.11.2012, 23:29     Handler и интервал времени #2
вообще странно, что насчитал больше. Насколько я знаю, handler не гарантирует выполнения задачи точно через указанные промежутки времени, т. к. выполнение задачи идет в общем потоке (в котором хендлер создан) и размещено в очереди. Если хочешь чтобы время было точным сделай так:
создай отдельный поток, в котором через определенные промежутки (например 100 мс) делай запрос System.currentTimeMillis(). Потом результат сравнивай со временем старта и полученное время через handler выводи на экран.
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
02.11.2012, 11:43     Handler и интервал времени #3
Может такой вариант подойдёт?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.Timer;
import java.util.TimerTask;
 
import android.os.Handler;
 
/**
 * Yuriy Aizenberg 02.11.2012
 */
 
public class Interval {
    Timer mTimer = new Timer(true);
 
    public Interval(int timerDelay, int timerPeriod) {
        mTimer.schedule(new mTimerTask(), timerDelay, timerPeriod);
    }
 
    class mTimerTask extends TimerTask {
 
        @Override
        public void run() {
            // TODO тут код, если не нужно менять что-либо в графическом потоке
 
            final Handler mHandler = new Handler();
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    // TODO или тут, если нужнен UI-поток
                }
            });
        }
 
    }
 
}
kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
02.11.2012, 13:20     Handler и интервал времени #4
С таймером тоже может быть погрешность - вот цитата отсюда:
http://developer.android.com/referen...util.TimerTask,long,long)

This class does not offer guarantees about the real-time nature of task scheduling. Multiple threads can share a single timer without synchronization.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.11.2012, 13:32     Handler и интервал времени #5
склоняюсь к варианту Кваки. тоже о таком подумал года читал первый пост.
Yandex
Объявления
02.11.2012, 13:32     Handler и интервал времени
Ответ Создать тему
Опции темы

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