React-Native: приложение зависает при отладке, если не щелкнуть экран

Мое приложение для Android состоит из двух экранов: входа в систему и панели управления. Вход в систему работает нормально, но панель инструментов создает проблемы.

Первая проблема:

На экране входа в систему я могу открыть меню отладки, и все работает, как ожидалось. Когда я переключаюсь на экран панели инструментов, я больше не могу открывать меню. Если я включил инспектор на экране входа в систему, а затем перейду на экран панели инструментов, инспектор исчезнет.

Вторая проблема:

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

Когда я подключаю отладчик, приложение сильно зависает. Щелкнув экран (с прикрепленным отладчиком), когда он застрял, приложение как бы продвигается на шаг вперед - когда я нажимаю на экран достаточно часто, я получаю все данные, которые ожидал! Точки останова НЕ установлены, и мне вообще не нужно использовать отладчик, его просто нужно прикрепить.

Аналог iOS, похоже, работает отлично.

Что здесь могло быть не так?

Обновлять:

Я использую React-Native 0.31.0

Чтобы уточнить: моя проблема не в отладчике как таковом. Моя проблема заключается в том, что я не получаю данных без отладчика, но получаю все данные, когда отладчик подключен (только на Android!).


person Vic Torious    schedule 02.09.2016    source источник
comment
какую версию RN вы используете? ›0.29, вы можете просто попробовать запустить react-native log-android, который дает вам тот же инструмент.   -  person dv3    schedule 02.09.2016
comment
также: вы можете показать код? трудно угадать ваше решение   -  person dv3    schedule 02.09.2016
comment
Ну ... проект уже довольно большой, поэтому я понятия не имею, какую часть кода я мог бы показать (не могу просто скопировать и вставить все).   -  person Vic Torious    schedule 02.09.2016
comment
Я столкнулся с той же проблемой ... тестирование на Android.   -  person purezen    schedule 14.11.2016
comment
@purezen, пожалуйста, посмотрите ответ, который я опубликовал. Может быть, это поможет вам, хотя мне было трудно описать, в чем проблема, потому что прошло уже немного времени.   -  person Vic Torious    schedule 14.11.2016


Ответы (1)


Я полагаю, что выяснил, в чем была суть проблемы.

При отладке приложения React-Native код запускается вашим Chrome, который поддерживает больше javascript. (Мне трудно подобрать для этого подходящие слова ...)

Из документации React-Native:

На симуляторах и устройствах iOS, эмуляторах Android и устройствах React Native использует JavaScriptCore, который является движком JavaScript, который поддерживает Safari. На iOS АО не использует JIT из-за отсутствия записываемого

исполняемая память в приложениях iOS. При использовании отладки Chrome он запускает весь код JavaScript в самом Chrome и взаимодействует с собственным кодом через WebSocket. Итак, вы используете V8

В моем случае это были функции, которые использовали for of циклы или синтаксис array.some.

Я не уверен, что в настоящее время поддерживается, поэтому вы (кто когда-либо сталкивался с этой проблемой), возможно, захотите обновить свою версию для реакции.

См. эту таблицу совместимости ECMAScript

person Vic Torious    schedule 14.11.2016