FPS составляет около 60, но анимация по-прежнему иногда глючит. Я сделал профилирование нитей и обнаружил, что на Samsung S4 или Samsung S3lockCanvas()
может занимать до 20 мс иногда. Есть ли какая-то конкретная причина для этого? Как избежать таких сбоев.Анимация сбоев при рендеринге SurfaceView
ответ
Некоторые устройства, особенно те, которые основаны на процессорах qcom, будут активно управлять мощностью на lowering clocks, так что вы увидите иногда глюки в анимации 60 кадров в секунду, когда ваш палец не будет активно перемещаться по сенсорному экрану.
Лучший способ справиться с этим - отбросить кадры при необходимости. Активность «Record GL app» в Grafika использует простой трюк с хореографом для этого. Подробное объяснение см. В разделе this appendix в документации по графической архитектуре.
Следует также отметить, что рендеринг холста на поверхности SurfaceView не является аппаратным ускорением, а по мере увеличения количества пикселей увеличивается время рендеринга, что делает его более вероятным, что вы пропустите свое окно. В некотором смысле добавленная загрузка ЦП может фактически сделать вещи более плавными - если управление питанием полагает, что устройство сильно загружено, оно не будет опускать часы, но оно разряжает батарею быстрее.
- 1. Ошибка при рендеринге Chrome, Slick.js, Flash-анимация
- 2. Масштабная анимация для SurfaceView
- 3. Имущественная анимация и SurfaceView
- 4. SurfaceView setMeasuredDimension() с высотой более 4096 сбоев
- 5. Анимация SurfaceView с MediaPlayer внутри
- 6. Анимация не работает в SurfaceView
- 7. MainThread зависает, когда анимация SurfaceView повернута
- 8. Анимация Custom View более плавная, чем пользовательская анимация SurfaceView?
- 9. OpenGL ES сбой при рендеринге кода при рендеринге
- 10. Реагирование реквизита только при рендеринге при повторном рендеринге
- 11. Маска положения при рендеринге
- 12. EmberJS: проблема при рендеринге
- 13. JTable разрывание при рендеринге
- 14. NoMethodError при рендеринге частичного
- 15. Ошибка при рендеринге шаблона?
- 16. ConcurrentModificationException при использовании SurfaceView?
- 17. NullPointerException при использовании SurfaceView
- 18. Программа сбоев при запуске
- 19. затмение сбоев при запуске
- 20. сбоев при вызове CoUninitialize
- 21. Анимация Android Fragment Transaction Анимация сбоев, если вы щелкните Пока анимация продолжается Прогресс
- 22. SurfaceView поверх SurfaceView
- 23. Vulkan: утечка памяти при рендеринге
- 24. Проблема при проверке и рендеринге
- 25. LibGDX игра тормозит при рендеринге
- 26. Игнорировать альфу при рендеринге текстуры?
- 27. android: BufferUnderflowException при рендеринге pdf
- 28. Ошибка при рендеринге Highstock date
- 29. Android Исключение, возникающее при рендеринге
- 30. Исключение, возникающее при рендеринге: action_bar
Вы сами регулируете частоту кадров, спянув поток? Я обнаружил, что я получил только 55 кадров в секунду с видом на поверхность. В противном случае вы находитесь во власти скорости вашего процессора и, следовательно, сбоя, если он решит, что он делает слишком много работы и замедляет некоторые кадры с временем блокировки или решает быстрее обработать некоторые другие кадры. И если вы понизите частоту кадров до 30 кадр/с, время lockcanvas опустится до 0-1 мс и не будет больше сжиматься. Вы можете попробовать Textureview (api 14), так как время блокировки только 0-1ms работает с полным дросселем (мне пришлось регулировать частоту кадров, чтобы моя анимация работала быстро). – Whitney