Как вызвать функцию в WebView Javascript из Android Java без задержки? - PullRequest
0 голосов
/ 20 сентября 2019

При использовании этого метода для вызова функций javascript существует обратная задержка в несколько миллисекунд (10 мс - 50 мс)

 webView.evaluateJavascript("javascript: updateARObject()", callback);

Как вызвать функцию мгновенно в javascript, все файлы находятся в папке ресурсов Android.

Возможно ли это с помощью какого-то пользовательского WebView, такого как Xwalkview?Или сокетное соединение между обоими?ARCore общается с Three.js в режиме реального времени, как этого добиться?

1 Ответ

0 голосов
/ 23 сентября 2019

Причина, по которой обратный вызов присутствует, заключается в том, что его нельзя сделать мгновенно из приложения для Android.

Основная причина этого заключается в том, что Android использует WebView для запуска JavaScript.Современный Android WebView - это всего лишь экземпляр Google Chrome, завернутый в вид Android.Как вы понимаете, этот экземпляр нужно запускать в отдельном процессе, как он это делает.Если кто-то захочет копать глубже, он обнаружит, что связь между приложением Android и WebView осуществляется через службу AIDL, поскольку все межпроцессные взаимодействия должны выполняться в Android.

Принимая во внимание время, необходимое для написаниявызов AIDL в стеке выделяет память и формирует сообщение (основной метод связи AIDL), отправляет его, разворачивает в Chrome, анализирует, выполняет javascript и выполняет все эти операции еще раз, чтобы ответить - 10 мс - 50 мс - очень низкая задержка.

Возможно, у ArCore есть собственный процессор js для быстрой обработки файлов js.Или Google Chrome имеет свой собственный метод связи с ArCore (или внутренним экземпляром).Я не знаю, но это продукты, разработанные Google, я думаю, что они знают свои ярлыки.

Пользовательский WebView может работать - единственное, что в основном это будет новая версия браузера, которую вы будете использовать.вам нужно поддерживать ваш js отдельно от всех других браузеров по целому ряду возможных причин.

Надеюсь, это вам как-то поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...