Я давно не работал на платформе ARM.Раньше у меня был Архимед.
Кажется, я не могу комментировать вопрос, поэтому я попрошу уточнить здесь:
Что вы используете для графики дляанимация?Я имею в виду анимированный GIF, набор растровых файлов или рисование с нуля каждый раз, что-то еще?
Я полагаю, что в ARM вы можете установить функцию обратного вызова по таймеру.Однако это, скорее всего, будет вызвано, даже если само приложение зависло, неправильно вводя пользователя в заблуждение, что оно работает.
Я понятия не имею, какую библиотеку пользовательского интерфейса или что вы используете, но большинство из тех, что я когда-либо работалесть способ poll () в очереди событий.Каждый раз, когда возвращается poll (), вычисляйте время, прошедшее с момента последней перерисовки анимации, и, если оно достаточно большое, выполните следующий кадр.Если нет, уменьшите тайм-аут poll (), чтобы вы не блокировали poll () слишком долго.
В качестве альтернативы, иногда вы можете заставить ОС помещать синхронизированные события в очередь событий.Перерисовывайте кадр каждый раз, когда вы читаете один из очереди событий.Это может быть особенно полезно, поскольку, если событие медленно обрабатывает события и начинает получать резерв, об этом будет свидетельствовать замедление анимации.Т.е. спиннер будет нормально вращаться на полной скорости, медленно, когда приложение трясется и борется, и останавливается, когда приложение зависает.
Это та информация, которую вы ищете?
Какдля увеличения шагов анимации, я уверен, вы не говорите о чем-то вроде:
int step = 0;
...
step = (step + 1) % max_steps;