2013-05-04 1 views
0

나는이 문제에 붙어 있고 내 실수가 어디에 내가 너희들에게 물어 해야할지 모르겠다. 처음 앱을 시작하면 모든 것이 정상적으로 작동하지만 휴대 전화의 '뒤로'버튼을 누르면 기본 화면으로 돌아가서 앱을 다시 시작할 수 있습니다 (앱이 잠자기 상태로되어 있기 때문에 새로운 시작 프로그램이 아닙니다). 정말 이상한 행동.안드로이드 애플 리케이션이 이상한 행동을 잠에서 돌아올 때

내가 터치를 텍스처 변경을 할 때 내가 화면에 텍스처를 그릴 opengles를 사용하고 있습니다. 터치는 다른 텍스처를 그리는 것을 나타내는 boolean 값을 true로 설정합니다. 하지만 어쨌든 터치 이벤트에서 사실로 기록 된 경우에도 그 값을 테스트 할 때 항상 잘못된 것입니다. 전화로 "뒤로"버튼을 눌렀을 때만 문제가 발생했기 때문에 궁금합니다. 홈 버튼으로 메인 화면으로 돌아가서 앱으로 돌아 가면이 일은 일어나지 않고 모든 것이 작동합니다.

는 먼저 나는 모든/set 메소드를 그것은 여전히 ​​나던 일 수 동기화 할 때 2 개 개의 다른 스레드도 (활동이 터치 이벤트에 대한 스레드와 서피스 뷰 SurfaceView 스레드 렌더링)하지만 스레드 뭔가 생각했다. 나는 touch thread가 여전히 오래된 객체들에서 동작하고 있다고 생각하기 시작했다. 렌더링 쓰레드의 참조가 새로 초기화되면서 부울이 touch에 의해 설정되지만 렌더링 쓰레드는 다른 값을 가지므로 기본값을 취한다. 분명히 어떻게 든 가능하지 않은 것들이 있습니다. 터치 한 후 장치가 다시 다른 객체 (질감 사각형)을 만들어 잠에서 왔을 때 ... 음 내가 찾은 실수를하고 :

가 그럼 난 내 지식의 말에 나는 그렇게 나에게

편집을 계몽하십시오 이벤트는 델타가 아닌 이전 이벤트에서 발생했고 새로운 이벤트가 그려졌습니다. 누군가가 잠에서 돌아 오면 호출되는 정확한하는 방법을 말해 줄 수 있다면 또한

그것은 좋은 것? 단지 부활일까요, 아니면 더 많은 것이 있습니까? 그리고 참조에 대한 것,이 널 (null) == 또 다른 목적, I도 테스트를 생성 한 후 새로 작성하지만, 어떻게 든이가에 대한 응답으로 다시

+0

gl 렌더러 코드와 부울 플래그가 설정된 부분을 터치 이벤트에서 게시 할 수 있습니까? 문제 해결에 도움이 될 수 있습니다. – Slartibartfast

답변

0

때 사실로 보인다 될 야해 때문에도 삭제받을 수 있나요 당신의 두 번째 질문은 여기에서 활동 라이프 사이클에 대해 자세히 알아볼 수 있습니다. http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

일반적으로로드 된 내용을 알고 있으며 텍스처, 모델 등의 라이프 사이클을 처리하는 리소스 관리자가 있어야합니다. 중지되거나 일시 중지 된 경우 리소스 관리자가 리소스를 언로드합니다 (일시 중지시 중지하지 않고 중지 한 경우에만 수행 할 수 있음). 앱이 다시 시작되면 모든 리소스를 다시로드하고 OpenGL 컨텍스트를 다시 생성합니다. 매니페스트에서 시스템은 OpenGL 컨텍스트). 텍스처를 설정하고 객체를 버퍼링해야합니다. 이 아이디어를 확장하여 응용 프로그램 수명주기 동안 지속되어야하는 모든 것을 처리 할 수 ​​있습니다.

해피 코딩!

관련 문제