Что происходит с тикером Flutter, если пользовательский интерфейс пропускает кадры из-за плохой работы?

#flutter #dart #animation #flutter-animation #frame-rate

Вопрос:

Я прочитал в документации по классу тикера, что:

«Класс тикера вызывает свой обратный вызов один раз за кадр анимации».

Я использую createTicker(TickerCallback onTick) для реализации секундомер. Поэтому мне нужно, чтобы переменная прошедшего времени, переданная TickerCallback в, была предельно точной (т. Е. Мне нужно, чтобы через 5 секунд значение прошедшего времени составляло ровно 5 секунд).

Теперь мой вопрос: что произойдет, если у меня очень плохо закодирован вялый пользовательский интерфейс, который пропускает много кадров из-за плохой оптимизации? Я могу вспомнить 2 случая:

  1. Время секундомера обновляется не со скоростью 60 кадров в секунду (из-за моей плохой кодировки), но как только оно обновляется, отображается правильное время
  2. Отображаемое время неверно
  3. Другое?

В чем же дело? И почему (самое главное)? Кроме того, учитывая вышесказанное, рекомендуется ли использовать тикер для секундомера? Спасибо

Комментарии:

1. проверьте это объяснение, почему : codewithandrea.com/articles/flutter-timer-vs-ticker

Ответ №1:

Чтобы ответить на ваши вопросы(вопросы):

1.Время секундомера обновляется не со скоростью 60 кадров в секунду (из-за моей плохой кодировки), но как только оно обновляется, отображается правильное время.

Если телефон работает со скоростью 120 кадров в секунду, означает ли это, что он будет перенаправлять время 🙂

Flutter стремится обеспечить производительность 60 кадров в секунду (кадров в секунду) или 120 кадров в секунду на устройствах с частотой обновления 120 Гц. Для 60 кадров в секунду кадры должны отображаться примерно каждые 16 мс. Jank возникает, когда пользовательский интерфейс не отображается плавно.

Таким образом, вы можете использовать тикер, и даже если анимация будет вялой, все равно она будет отображаться в нужное время. Как и в случае, допустим, у нас есть некоторые задержки на кадрах 500, они будут задержками анимации, а не прошедшим временем. Как и на 3 — й секунде, у нас задержка 1 секунда, после этого у нас будет 5, он обновит экран, но таймер будет продолжаться.

Кроме того, учитывая вышесказанное, рекомендуется ли использовать тикер для секундомера?

Это. В худшем случае у вас будут выпадающие кадры, прыгающие секунды, но таймер будет точным.