2010-12-27 5 views
3

사용자 이동을 추적하기 위해 지속적인 터치가 필요한 게임이 있습니다. 및 SurfaceView를 그립니다. 나는 약 30 초 간격으로 system_server가 GC로 시작하여 게임을 더듬 거리게 만듭니다. 화면에 손을 대지 않으면 system_server는 GC가 아닙니다. 나는 누구든지이 문제가 발생하기 전에 궁금해합니다. 나는 캔버스를 사용하여 한 번에 30 개 이상의 객체를 화면에 표시하고 system_server 단계가 완료 될 때까지 꽤 부드럽게 (56fps) 실행됩니다 ... 이 SurfaceView를 상속합니까? 3D 게임 ( GLSurfaceView 사용)에는이 문제가없는 것 같습니다.계속 터치하면 system_server가 발생합니다. GC

저는 삼성 바이브란트에서 개발하고 있습니다.

감사합니다.

+0

onTouchEvent()에 작은 지연을 배치하면 system_server가이 GC의 빈도를 줄이는 것처럼 보입니다. 내 게임의 응답 성 ... 지금 깨끗한 해결책이있는 것 같지 않지만 안드로이드 2.3은 이것을 고칠 것입니다 : http://www.rbgrn.net/content/412-android-23-brings-games-to- 최전선 – broody

+0

업데이트 : 마침내 문제를 해결했습니다. 렌더링과 논리를 처리하는 두 개의 스레드가 있었을 가능성이 매우 높습니다.이 구현은 매우 비효율적이었습니다 ... 논리와 렌더링을 하나의 스레드로 결합한 후 게임 플레이는 smfeoth 56fps입니다. system_server 여전히 gc이지만 시간이 걸립니다. ~ 300ms ~ ~ 400ms 대신 ~ 180ms – broody

+0

논리와 렌더링을 하나의 스레드로 결합한다는 것은 무엇을 의미합니까? 이 구현 유형의 예를보고 싶습니다. 그러나 터치 이벤트가있는 GC가 너무 많아서 게임 시작시 단 하나의 GC 만 만지지 않아도 걱정할 필요가 없습니다. 내가 여러 번 만지면 그곳에는 꽤 나쁜 것이있다. –

답변

0

게임을 시작하기 전에 개체를 할당합니까? 게임 중에 새로운 객체를 생성하고 오래된 객체를 생성하면 필연적으로 GC가 실행됩니다.

관련 문제