Экспо ошибка - после сбоя, кнопка Android Back приводит к тому, что автономное приложение переводится в фоновый режим

Мы сталкиваемся с проблемой, при которой после "сбоя" и перезагрузки приложения (пользователь возвращается к первому экрану), когда пользователь нажимает кнопку "Назад" на Android, приложение переводится в фоновый режим. Мне удалось воспроизвести это с помощью стандартного проекта "Вкладки", который предоставляется CRNA на Expo 31 SDK (ссылка: https://exp-shell-app-assets.s3.us-west-1.amazonaws.com/android/%40allen.lin/split-screen-poc-c25e728a483c4c71ba9109ac70a93ef1-signed.apk 1) без добавления дополнительного кода. В настоящее время обходной путь заключается в том, чтобы пользователь открыл переключатель приложений, а затем убил и снова открыл приложение.

Вот несколько шагов, чтобы последовательно воспроизвести его на телефоне Google Pixel 2 (или любом другом телефоне с функцией разделения экрана), что приведет к перезагрузке приложения:

  1. Откройте приложение.
  2. Нажмите на любую из вкладок, чтобы переключиться на разные экраны (например, "Ссылки"). Нажатие кнопки "Назад" Android вернет пользователя на вкладку "Домой".
  3. Отсюда активируйте функцию разделения экрана, нажав и удерживая квадратный значок, расположенный внизу устройства (где находятся кнопки "Назад" и "Домой"). Это приведет к сбою и перезагрузке приложения.
  4. Чтобы выйти из режима разделенного экрана, перетащите черную горизонтальную полосу в центре экрана в нижнюю часть экрана, чтобы приложение снова сфокусировалось. Это снова приведет к сбою и перезагрузке приложения. Нажмите на вкладку "Ссылка" еще раз.
  5. Теперь нажмите кнопку возврата Android. Приложение должно быть свернуто.

Я попытался посмотреть на ADB Logcat, но в журналах было слишком много шума. Одна строка действительно выделялась, когда я grep'd журналы для "исключения", хотя:

12-05 16:03:07.137 23448 23448 E j : Runtime exception in RNObject when calling method getCurrentReactContext: java.lang.NullPointerException: null receiver

Я также видел несколько вызовов метода moveTaskToBack() при нажатии кнопки "Назад".

Просто чтобы быть понятным, это не связано с функцией разделения экрана на устройствах Android. Один из моих коллег смог воспроизвести это на своем устройстве XiaoMi A1M1 (под управлением Vanilla Android 8.1.0 - он работает на программе Android One) в нашем основном приложении Expo (SDK 30). Его устройство не имеет функции разделения экрана, и он все еще видел эту проблему. Я думаю, что наше приложение могло зависнуть на его устройстве из-за проблем с кодом.

Это известная проблема в Экспо? Есть ли обходной путь, чтобы избежать этой проблемы с кнопкой возврата Android?

РЕДАКТИРОВАТЬ: Отслеживается инженеров Экспо здесь: https://github.com/expo/expo/issues/1786. Кажется, главная проблема на Android - нехватка памяти, приводящая к гибели приложений.

Возможно, это проблема, связанная с реакцией.

0 ответов

Другие вопросы по тегам