안녕하세요.
제 앱의 메인 액티비티는 portrait 모드만 지원을 하는데요.
<activity android:name=".MakeIt3D" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar">
얼마 전, 모토롤라 Xoom 유저(3.1)가 앱이 강제종료 되는 문제가 있다고 알려줬습니다.
모토롤라 Xoom에서 제 앱을 실행하면 화면이 portrait로 전환되면서 바로 종료가 된다고 하고,
먼저 화면을 portrait로 돌려 놓고 앱을 실행을 하면 문제가 없다고 합니다.
갤럭시탭이나 LG Optimus Pad (LG V-909) 등의 다른 타블릿에서는 문제가 없었습니다.
구글링을 해 보니 몇몇 앱에서 같은 문제가 발생한는 것 같은데, 해결방법은 찾을 수가 없었습니다.
아마, 다른 분들도 저 같이 메인 액티비티가 portrait만 지원을 한다면, Xoom에서 같은 문제가 있을 것 같은데요.
앱에서 먼저 현재 방향을 체크해서 landscape면 portrait로 변경하면 될 것 같기는 합니다만,
그러게 하게되면, permission이 하나 더 늘어나게 됩니다 (modify global system setting).
혹시 이 문제를 해결하신 분이 계신가요?
아.. 제가 개발했던 어플에서 만든 특정 부분이 액티비티가 처음에 뜨자마자 바로 종료하고 다시 뜨는 경우에
죽는 버그가 있었다는 말씀을 드린다는 것이..'레퍼런스 카운터'가 강조되어 오해를 불렀군요.
어부바 님의 프로그램에 '레퍼런스 카운터'가 있거나 하다는 뜻이 아니고요.. ^^
다시 정리하면.. "어플이 실행되어 (가로)액티비티가 뜨자마자 바로 그 액티비티가 종료되었다가, 다시 (세로)액티비티가 뜬다" 의 상황이
zoom 에서 일어날 수 있으니 이런 시나리오에서 어플이 죽지 않는지 확인해보면 좋겠다...는 겁니다.
제가 추측하기엔
오리엔태이션 모드가 변경될때..
클래스에 변경된 값들을 따로 저장안하면.. 초기값으로 됩니다..
onSaveInstanceState(), onRestoreInstanceState()를 적절히 활용해보세요.
그리고 LogCat에서 에러 메시지를 확인해보세요.. 보통 Null Point Exception으로 많이 죽는걸 보실거에요.. 인덱스 참조 범위 또한..




저도 전에 비슷한 문제를 겪은 적이 있었습니다.
landscape 전용 어플인데,
다른 기기들에서는 전혀 문제 없는데 Zoom 에서만 세로 상태에서 어플을 띠우면 크래쉬 되는 상황이었습니다.
결론은 액티비티가 세로로 한번 떴다가 바로 내려가고 다시 가로로 액티비티가 뜨고 있었습니다.
그러면서 어플의 다른부분에 있던 레퍼런스 카운터 관련 숨어있던 버그가 드러나면서 어플이 죽는 것이었습니다.
그래서 레퍼런스 관련된 부분의 버그를 잡으니 크래쉬가 없어졌습니다.
이런 식의 시나리오도 염두하고 어플 코드를 분석해보시면 도움이 될지도 모르겠습니다.