2015. 1. 25. 20:26
카메라를 사용하는 어플을 만들어서 문제 없이 사용하고 있었는데 일부폰에서 카메라를 찍고 돌아왔을때 앱이 죽는 현상이 있었다. 특정 회사, 특정 폰에서 나타나는 현상이었는데 아무리 구글링을 해도 원인을 찾을 수가 없었다. 해결방법은 간단했다.
1 | android:configChanges="orientation|screenSize" | cs |
위 코드를 AndroidManifest.xml내에서 해당 activity에 추가해주면 된다. 어플리케이션에서 configuration이 바뀌는 경우가 있는데 (언어, 레이아웃방향, 사이즈, 글씨 크기 등등) 그때마다 핸드폰은 해당 activity를 다시 실행한다. 위 코드는 레이아웃 방향의 변화는 스크린 사이즈가 변화가 있어도 activity를 다시 실행하는(다시 그리는) 동작을 하지 말라는 코드다.
원인은 일부 폰에서 카메라 기능을 사용할 때의 레이아웃방향과 내가 만든 어플의 레이아웃방향이 다를때 일어나는 현상이었다. 보통은 카메라 기능을 사용하고 돌아왔을때 결과값만을 가지고 오기때문에 문제가 되지 않지만 일부폰에서는 그때 사용한 레이아웃방향까지 인식하여 자체적으로 configuration change가 일어난 상황으로 인식해 해당 activity를 재실행하다가 생기는 버그였다.(null 포인트가 잡힌다.) 위의 코드를 추가해주면 activity의 재실행을 막아주므로 해당 버그를 막을 수 있다.