마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

surfaceview 뒤로가기 관련 질문 부탁드립니다ㅠ

0 추천
안녕하세요. 현재 게임관련 어플을 개발 중입니다.

surfaceview을 통해 게임을 구현 했고(퍼즐류게임) 게임도중 플레이어가 뒤로가기를 눌렀을 때, 이전 화면으로 돌아갈려고 합니다.

뒤로가기를 눌렀을 때, 이전 화면으로 돌아가는 것까지 확인이 되었는데 문제는 현 액티비티를 종료하고 뒤로 가면 화면은 이전 화면으로 바로 돌아갔지만, 터치가 1~2초간 작동하지 않는 현상이 발생했습니다.

로그를 찍어보니 backpressed 이후 1~2초뒤에 surfaceviewdestroyed가 발생하더군요ㅠㅠ

그 이유를 찾다가 surfaceview를 invisible로 하면 destroyed가 호출되서 좀 더 빨리 종료가 된다고 해서 backpressed함수에서 invisible을 시켰더니 backpressed보다 destroyed가 먼저 호출되면서 그 차이는 0.03초밖에 차이가 안나고 빠르더라구요. 하지만 일반적인 view안에 surfaceview가 있는 구조다 보니 surfacaview가 invisible로 종료되고 뒤에 view가 남아있는게 보이고나서 view가 종료되서 이전 액티비티로 돌아가게 됩니다..ㅠ

둘이 동시에 종료되서 사용자눈에는 그런 차이가 안보이게 하거나 이전처럼 invisible을 하지않되 1~2초간의 차이를 없애고 싶은데 방법이 없을까요??ㅠ

onbackpressed 와 onpause, surfacedestroyed의 로그를 남깁니다 부탁드려요

 

아래는 invisible속성을 주지 않았을 때의 로그이고

2019-09-09 13:22:53.306 10485-10485/gang.il D/onBackPressed(): onBackPressed()
2019-09-09 13:22:53.307 10485-10485/gang.il D/onPause(): onPause()
2019-09-09 13:22:53.315 10485-10485/gang.il W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@e5d7cd5
2019-09-09 13:22:53.858 10485-10521/gang.il D/EGL_emulation: eglMakeCurrent: 0xdab6a160: ver 3 0 (tinfo 0xdab594a0)
2019-09-09 13:22:53.996 1877-1907/? I/ActivityManager: Displayed gang.il/.StagePage: +664ms
2019-09-09 13:22:54.516 10485-10485/gang.il D/surfaceDestroyed(): surfaceDestroyed()

 

아래는 invisible속성을 주었을때의 로그입니다.

2019-09-09 13:33:40.307 10981-10981/gang.il D/surfaceDestroyed(): surfaceDestroyed()
2019-09-09 13:33:40.309 10981-10981/gang.il D/gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread)
2019-09-09 13:33:40.310 10981-10981/gang.il D/gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread)
2019-09-09 13:33:40.311 10981-10981/gang.il D/gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread)
2019-09-09 13:33:40.313 10981-10981/gang.il D/gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread)
2019-09-09 13:33:40.319 1727-2199/? E/BufferQueueProducer: [SurfaceView - gang.il/gang.il.GamePage#0] disconnect: not connected (req=2)
2019-09-09 13:33:40.321 10981-10981/gang.il D/gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread)
2019-09-09 13:33:40.323 10981-10981/gang.il D/gralloc_ranchu: gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread)
2019-09-09 13:33:40.324 1877-2193/? I/ActivityManager: START u0 {cmp=gang.il/.StagePage} from uid 10148
2019-09-09 13:33:40.342 10981-10981/gang.il D/onBackPressed(): onBackPressed()
2019-09-09 13:33:40.350 10981-10981/gang.il D/onPause(): onPause()
IU (260 포인트) 님이 2019년 9월 9일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...