안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
현재 Activity를 상속받아 내부클래스로 SurfaceView를 drawing 하고 있습니다.
물론, SurfaceView에 관한 Thread클래스도 별도로 가지고 있구여.
Homekey, Backkey에 대한 처리는 SurfaceDestroy함수에서 Thread를 Pause하도록 처리하여, 화면 복귀시 정상적으로 이전화면으로 복귀하고 있습니다.
문제는 작업 중, Hold키를 입력할경우 OnDestroy함수가 호출되며, Activity가 재생성되어버려 화면이 초기화 되고 잇습니다.
처음에는 OnDestroy에 처리구문이 없어 Hold키 누른후 다시 해제 하면 어플의 이전화면복귀를 하고 있는것 같은데 오류가 나길래
Thread.stop을 OnDestroy에서 처리해주니 정상적으로 돌아옵니다. 단, 어플이 재생성되어버려 이전화면의 데이터가 모두 초기화가 되고 있습니다.
onSaveInstanceState를 이용하여 데이터를 백업하고 복구시키는 방식으로 하려고 하였으나, 대부분의 데이터가 realTime데이터들이고 워낙 양이 많아 다른 대응책을 찾고 있는데, 혹 이런 문제를 해결하신 분이 있으시면 도움 부탁드립니다.
즐거운 하루 되세요
현재 Activity를 상속받아 내부클래스로 SurfaceView를 drawing 하고 있습니다.
물론, SurfaceView에 관한 Thread클래스도 별도로 가지고 있구여.
Homekey, Backkey에 대한 처리는 SurfaceDestroy함수에서 Thread를 Pause하도록 처리하여, 화면 복귀시 정상적으로 이전화면으로 복귀하고 있습니다.
문제는 작업 중, Hold키를 입력할경우 OnDestroy함수가 호출되며, Activity가 재생성되어버려 화면이 초기화 되고 잇습니다.
처음에는 OnDestroy에 처리구문이 없어 Hold키 누른후 다시 해제 하면 어플의 이전화면복귀를 하고 있는것 같은데 오류가 나길래
Thread.stop을 OnDestroy에서 처리해주니 정상적으로 돌아옵니다. 단, 어플이 재생성되어버려 이전화면의 데이터가 모두 초기화가 되고 있습니다.
onSaveInstanceState를 이용하여 데이터를 백업하고 복구시키는 방식으로 하려고 하였으나, 대부분의 데이터가 realTime데이터들이고 워낙 양이 많아 다른 대응책을 찾고 있는데, 혹 이런 문제를 해결하신 분이 있으시면 도움 부탁드립니다.
즐거운 하루 되세요
2010.11.24 13:22:30
늦었지만 자답하겠습니다.
Hold키 입력후 해제시 onDestroy가 강제 호출되는 문제는, 확인결과 Hold상태가 해제됨과 동시에 센서상 현위치기점으로 화면이 potrait인지 landscape인지를 결정하고 강제로 activity가 재생성 되버리는 문제로 확인하였습니다.
의외로 간단한 문제였습니다
자료를 검색해보시면 가로,세로 전환시 activity재생성에 대한 문제 해결책들이 많은데, 이부분을 적용하였을때 해결이 되었습니다. 위에 설명드린바와 같이 Hold상태였다가 해제가 되면 시스템적으로 actvitiy의 디스플레이 상태를 재확인하여 feedback이 오는것으로 확인됩니다.
아래 링크를 보시고 적용하여 테스트 해보시길 바랍니다.
http://canon110.tistory.com/92
Hold키 입력후 해제시 onDestroy가 강제 호출되는 문제는, 확인결과 Hold상태가 해제됨과 동시에 센서상 현위치기점으로 화면이 potrait인지 landscape인지를 결정하고 강제로 activity가 재생성 되버리는 문제로 확인하였습니다.
의외로 간단한 문제였습니다
자료를 검색해보시면 가로,세로 전환시 activity재생성에 대한 문제 해결책들이 많은데, 이부분을 적용하였을때 해결이 되었습니다. 위에 설명드린바와 같이 Hold상태였다가 해제가 되면 시스템적으로 actvitiy의 디스플레이 상태를 재확인하여 feedback이 오는것으로 확인됩니다.
아래 링크를 보시고 적용하여 테스트 해보시길 바랍니다.
http://canon110.tistory.com/92
같은 문제로 고민하고 있습니다..
저또한 홀드키에대한 예외처리가 잘안되어 애를 먹고 있습니다.
Hold키를 눌렀을때 OnDestroy가 발생하지 않도록 해주고싶은데 도저히 방법을 못찾겠군요.
저는 이게 안드로이드가 메모리가 부족하여 발생시켰다고 생각했는데 메모리를 다해제해주어도 그러는것 같습니다..