리액트 네이티브에서 StatusBar 커스텀하려고 정보를 찾아 처리하였다.
안드로이드에서 커스텀할 경우 MainActivity.java 를 수정하고 res/values/styles.xml을 열어
<resources> <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowExitAnimation">@android:anim/fade_out</item> <item name="android:windowFullscreen">true</item> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> </resources>
이렇게 수정하라고 한다.
하지만 이렇게 만들면 안드로이드에서 BackHandler.exitApp() 를 실행하여 앱을 종료하고 다시 재실행 했을 때 커스텀한 상태바가 사라져서 풀스크린으로 나오고 상태바에 있어야할 정보들이 안보이게 된다.
리액트 네이티브에서 제공하는 BackHandler.exitApp() 는 유일한 앱 종료 기능인데 완전 종료는 아니다. 그래서 재실행하면 마지막으로 보였던 페이지가 열리게 되는데 그 때는 스플래시부터 실행되는 것이 아니기 때문에 상태바를 보이게 하는 것이 적용되지 않기 때문이다.
이 오류 케이스는 스플래시 화면 + 상태바 커스텀 + BackHandler.exitApp() 을 진행했을 때 발생한다.
만약 리액트 네이티브로 안드로이드에서 뒤로 가기 버튼으로 앱을 종료하고 다시 실행했을 때 커스텀 상태바가 없어지거나 안보인다면 위에 보이는 코드를 지워보고 다시 빌드해보면 디버깅할 수 있다.
나는 이 아래 코드들을 지우고 정상적으로 처리되었다.
<item name="android:windowFullscreen">true</item> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item>