Как мне увеличить производительность Canvas внутри WebView внутри React Native?
Очень нужен ваш совет!
Кейс моего приложения следующий: имеем WebView с канвасом внутри, канвас строим через фреймворк Konva.js, сам канвас рисуем векторами которые приходят нам из жирного json с описанием команд того как рисовать наши кривые и вектора.
Приложение активно общается между React Native и WebView. Есть как команды посылаемые внутрь WebView для перерисовки канваса, так и команды приходящие из WebView для получение различных эвентов типа тапов по канвасу.
Я бы хотел услышать любые советы о том как я могу увеличить производительность всего этого дела?
Пока основная идея у меня в голове это уйти от вектора, генерировать обычные png изображение и выводить их.
Если вдруг у кого нибудь есть мысли по этому поводу или может кто-то делал что-то похожее я был бы рад выслушать)
0. Использовать нативный ЯП или даже NDK
1. Убрать из рассмотрения webview и оптимизировать отрисовку для хрома
1.1 ПОтом проверять результат в webview
У меня для десктопа написано приложение на React.js с точно такой же кодовой базой и там все летает в том числе и на мобиле. Думаю тормозит именно webview и надо как-то это побороть.
Димка Реактнативный, отрисовка в мобильном приложении схем по слоям с возможностью зумить, перетаскивать и скрывать/показывать слои по отдельности. В приоритете единая кодовая база с десктопным приложением на React.js.
Изначально текущая реализация хорошо решает поставленную задачу, но на больших объемах данных появляются проблемы производительности при взаимодействии с канвасом внутри мобильного приложения. Данные представляют из себя некоторый json с командами и координатами для рисования схем в векторе. Данных очень много, могут достигать 30-70 мб текстовых данных в формате json, в среднем около 10-20 мб.
Димка Реактнативный, но все же остается открытый вопрос, а какие альтернативы для задач на RN вроде рисования сложной интерактивной графики?
Или вот допустим тоже частый кейс, который мне встречается. Есть некоторое общее АПИ для сайта и приложения. Есть некоторые текстовые страницы которые чаще всего заполняются через визуальный редактор с HTML разметкой. Единственный способ вывести это красиво в приложении на данный момент это WebView. Ну либо заморочиться с регулярками на все случаи жизни)