Dmitry
мне вот интересно, кто-нибудь пытался решить такой кейс? При клике открывать свайп-экран, но уже отрендеренным
Dmitry
то есть чтобы экран "выдвинулся" только после того, как получит все данные и отрисуется
чей ты
И что же делать? Как Вы поступили?
Есть два решения Зафиксировать версию флоу и не обновлять (ну идея так себе) Для файлов где у нас ошибки убираем аннотацию "//@flow" Что бы отключить тайпинги , Далее при изменение или создании новых файлов мы эти аннотации возвращаем и правим ошибки появившиеся. Т.е. если какой-то файл трогали то обязательно его типизируем В итоге через некоторое время вернёте проект к максимальному покрытию типами. ‐--- У нас было около 600+ ошибок сейчас осталось меньше половины
Steve
то есть чтобы экран "выдвинулся" только после того, как получит все данные и отрисуется
а зачем это? Анимации и были придуманы для того что бы за 300мс можно было скачать нужные данные
Preeternal
то есть чтобы экран "выдвинулся" только после того, как получит все данные и отрисуется
Как то так: componentDidMount() {     // 1: Component is mounted off-screen     InteractionManager.runAfterInteractions(() => {       // 2: Component is done animating       // 3: Start fetching the data       // this.props.dispatchDataFetchStart();       // 4: set didFinishInitialAnimation to false       // This will render the navigation bar and a list of players       this.setState({         didFinishInitialAnimation: true,       });     });   }
Preeternal
Хотя я наоборот это использую (чтоб до конца отрисовался скрин)
Dmitry
у нас бывает данные 1с идут
Steve
смысл анимаций в том что бы исползовать это время для загрузки
Steve
ставить на паузу все пока анимация не закончится - это какой-то сюр
Steve
по моим бенчам перформанс JSC в два раза выше чем хром о_О
Dmitry
смысл анимаций в том что бы исползовать это время для загрузки
я беру в принмер телеграм) писали чат, но так и получилось добиться такого результата, как в телеграме при открытии чата. Чтобы экран выезжал уже отрисованным с сообщениями
Steve
потому что он отрисовывается пока идет анимация
Steve
мы как раз и использовали опыт телеграма, даже на нативном коде такое сделать это сложно
Steve
телеграм старается максимально быстро начать анимацию
Steve
хах у меня JSC оказывается быстрее в два раза хрома
Steve
на простом коде
чей ты
на простом коде
А на сложном
Steve
t = Date.now(); function a() {}; for (var i = 0; i<1000000000;i++) { a('Hello') }; console.log(Date.now() - t);
Steve
Пока не знаю, я тестировал еще перформанс байндинга
Steve
выходит аж 500к вызовов в секунду (на маке)
Evgeniy
@steve_kite подскажите пожайлуста, чем лучше пользоватся для анимаций?
Gena
И что же делать? Как Вы поступили?
А мы просто не начали использовать flow, а начали использовать typescript. Там тоже умеют с очередным релизом всё переломать, но до сих пор у меня больших проблем было 2 за всё время работы с ts, обе фиксились около часа. Чаще товарищи, которые @types/react-native пилят ломают всё... и вот там иногда приходится поломать голову... но опять же, таких проблем было всего 3-4 за год.
Gena
А вот пример коммита (PR вернее), который демонстрирует качество кода в RN https://github.com/facebook/react-native/pull/23209. Проблема в том, что это довольно сложно исправить теперь, учитывая, что до сих пор изнутри fb временами исходят совершенно непотребные коммиты... Хотя конечно последние месяцы, ситуация чуть чуть начинает сдвигаться в сторону улучшения. Но вот с 0.58 опять косяк на косяке...
Steve
@steve_kite подскажите пожайлуста, чем лучше пользоватся для анимаций?
Для перформанса нужно пользоваться Core Animation и андроидные View.animate. В идеале еще воткнуть мой хак, который делает все анимации плавными плавными: https://gist.github.com/ex3ndr/4a2b4a27164c6984c12e2b2822d0b0a4
Сергій
Для перформанса нужно пользоваться Core Animation и андроидные View.animate. В идеале еще воткнуть мой хак, который делает все анимации плавными плавными: https://gist.github.com/ex3ndr/4a2b4a27164c6984c12e2b2822d0b0a4
https://gist.github.com/ex3ndr/4a2b4a27164c6984c12e2b2822d0b0a4#file-makeanimationsfast-kt-L18 костылище 🌚 помню гугл ревертнул коммит с ViewPropertyAnimator на рендертреде
Steve
вот вот
Steve
я до сих пор офигиваю
Steve
а ты откуда знал про это?
Сергій
говорил с Четом, у них были проблемы с синхронизацией кадров
Steve
ну да давайте сделаем так что бы все лагало)
Сергій
потому и откатили
Steve
работает на всех версиях андроидов - включает обратно
Steve
очень лагает
Сергій
🌝
Steve
если хоть что-то тяжелое в UI тред попадет то будет лаг, а так его не будет
Сергій
ну дык
Сергій
и на андроид 9 работать не будет
Steve
даже айфон без core animation лагает, ты не можешь гарантировать что где-то у тебя во вьюхах нет доступа к диску который может дольше чем пара мс тебя залочить
Steve
а что они в девятом сделали? совсем удалили?
Сергій
рефлексию для фреймворка закрыли
Steve
вот блин
Сергій
declaredFields.find - очень медленное )
Сергій
рефлексия же
Steve
обычно лаг в анимации где-то в середине
Steve
или в конце
Сергій
ViewPropertyAnimatorRT он вообще работает?
Steve
тк сначала легкий лоадер показывается, а потом выплеввывается куча вьюшек с данными
Steve
тут лаг может быть только перед анимацией и единоразово
Steve
да работает
Steve
даже слабые девайсы идеально работать начинают с этим хаком
Steve
вообще ни одной проблемы не нашел
Сергій
Чет говорил что у них были артефакты, не доделан он
Steve
ну альтернатива - это что бы у тебя почти всегда подлагивал интерфейс
Dmitry
Проблема в пользователях
Steve
хз
Dmitry
Если будет везде лагать по чуть-чуть, то все привыкнут, а если редко кое-где то будут бомбить)
Steve
когда я в телеге работал я еще не знал про этот хак
Steve
ну у нас лагов нет кроме пары мест, как раз при переключении экранов
Steve
это очень бесило
Сергій
может в андроид 10 что-то будет для анимаций )
Steve
У меня три года назад на ютубе была лекция: https://www.youtube.com/watch?v=14Kj_GmbTMw
Steve
там все от начала до конца рассказано
Сергій
посмотрю
Сергій
там все от начала до конца рассказано
не подскажешь, в чем трудность у Android Framework Team сделать быстрый рендеринг шрифтов, они сейчас какими-то обходными путями все решают, этот PrecomputedText
Steve
шрифты всегда тяжело
Steve
и на айфоне тоже медленно
Сергій
и на айфоне тоже медленно
да ладно, всяко быстрее андроид
Сергій
тг на канве рисует же быстро
Steve
вроде андроид быстрее
Steve
ну в айфоне такие же канвы считай
Steve
UIKit тоже тупит
Сергій
😳 мне доказывали с пеной у рта что наоборот )
Steve
мне так сказал разработчик телеграма под айфон, я ему доверяю в вопросах скорости
Сергій
хех, открытие для меня
Steve
ты пробовал когда-нибудь хотя бы кастомные emoji запилить?
Steve
Это чрезвычайно сложно