Экспо ошибка - после сбоя, кнопка 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 (или любом другом телефоне с функцией разделения экрана), что приведет к перезагрузке приложения:
- Откройте приложение.
- Нажмите на любую из вкладок, чтобы переключиться на разные экраны (например, "Ссылки"). Нажатие кнопки "Назад" Android вернет пользователя на вкладку "Домой".
- Отсюда активируйте функцию разделения экрана, нажав и удерживая квадратный значок, расположенный внизу устройства (где находятся кнопки "Назад" и "Домой"). Это приведет к сбою и перезагрузке приложения.
- Чтобы выйти из режима разделенного экрана, перетащите черную горизонтальную полосу в центре экрана в нижнюю часть экрана, чтобы приложение снова сфокусировалось. Это снова приведет к сбою и перезагрузке приложения. Нажмите на вкладку "Ссылка" еще раз.
- Теперь нажмите кнопку возврата 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 - нехватка памяти, приводящая к гибели приложений.
Возможно, это проблема, связанная с реакцией.