Перейти к содержанию
Fire Monkey от А до Я
  • 0

Когда много таймеров


Steepe_Hare

Вопрос

Как ведет себя приложение, написанное для Андроид, со множеством таймеров? Не подтормаживает ли? Корректно ли считают время таймеры?

Делаю мобильное приложение что-то вроде Фермы или Запорожья, и там многое построено на отсчетах промежутков времени.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

В любом случае рост таймеров всегда будет сказывать на скорость приложения и запаздывания. Поскольку таймеры в fmx выполняются в главном потоке, то соответственно все OnTimer события будут вызываться по очереди. И чем дольше занимает выполнение этих событий, тем таймеры будут менее точны.

Предел количества таймеров не знаю :-) НО любую задачу можно выполнить несколькими способами. В вашем случае нужно просто сделать типа Менеджер расписаний, который будет базироваться на одном всего лишь таймере и в OnTimer проверять наступило ли событие или нет.

Ссылка на комментарий
  • 0

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

Ссылка на комментарий
  • 0
24 минуты назад, Error сказал:

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

менеджер событий - это один таймер на все события? но Interval же у всех разный

Ссылка на комментарий
  • 0
Только что, Steepe_Hare сказал:

менеджер событий - это один таймер на все события? но Interval же у всех разный

Это некий вспомогательный класс, к примеру TEventManager, который хранит список событий в формате <СсылкаНаОбработчик, НеобходимаяЗадержкаПередВызовом>,

Внутри класса молотит 1 таймер, обработчик которого проходит по списку и смотрит какие события необходимо вызвать и удалить из списка, или не удалять если нужна периодичность, а просто перенести НеобходимаяЗадержкаПередВызовом вперед.

Когда нам надо создать событие мы делаем что-то типо EventManager.Add(OnAnoterTimer, 100);

Ссылка на комментарий
  • 0
В 19.10.2016 в 19:16, Error сказал:

Это некий вспомогательный класс, к примеру TEventManager, который хранит список событий в формате <СсылкаНаОбработчик, НеобходимаяЗадержкаПередВызовом>,

Внутри класса молотит 1 таймер, обработчик которого проходит по списку и смотрит какие события необходимо вызвать и удалить из списка, или не удалять если нужна периодичность, а просто перенести НеобходимаяЗадержкаПередВызовом вперед.

Когда нам надо создать событие мы делаем что-то типо EventManager.Add(OnAnoterTimer, 100);

 

Еще был бы пример... Никогда подобным не занимался

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...