캔버스에 샘플 게임을 표면보기로 만듭니다.안드로이드 - 스레드를 일시 중지하고 다시 시작하면 스레드가 느려집니다.
저는 업데이트와 그리기 방법을 사용하면서 잠시 사용하고 있습니다. 이제 게임을 일시 중지하고 다시 시작하려고합니다. 인터넷에서 발견 된 방법으로 게임을 다시 시작하면 훨씬 느려집니다.
내 루프 게임 : 이while(playing){ // on runnable thread update(); // update all objects of the game draw(); // draw all objects of the game control(); // first remove dead objects, after sleep the Thread. }
그리고 내 일시 정지 및 재개 방법 :
이public void pause(){ playing = false; try{ gameThead.sleep(17); } catch(ex){}; } public void resume(){ playing = true; gameThread = new gameThread(this); // this object is a runnable gameThread.start(); }
사람이 왜 느려지 알고 있나요? 그리고 그 해결책? (참고 : 변수 대신 고정 된 수면을 주려고했는데 그 결과는 같은 속도 임)
고마워.
@EDIT
나는 문제를 발견했다.
내 활동에 리스너 onResume()이 있었는데이 스레드가 시작됩니다 ...하지만 표면 뷰의 구조에서 나는 그것을 너무합니다 ... 다시 시작 : 게임이 시작되면 2 개의 스레드가 있습니다 ... 일시 정지는 게임을 너무 느리게하지 않으며 일시 중지는 올바른 속도에 있습니다 ... 시작 게임에 2 개의 스레드가 있습니다 (및 2 업데이트)
고마워요.
// my thread
while(playing && !paused){ // on runnable thread
update(); // update all objects of the game
draw(); // draw all objects of the game
control(); // first remove dead objects, after sleep the Thread.
}
public void pause(){
paused = true;
}
public void resume(){
paused = false;
}
public void quit() {
playing = false;
}
내가 원래 문제가 생각이 코드입니다 :
gameThread = new gameThread(this); // this object is a runnable
gameThread.start();
마다 playing
이 거짓
시도했지만 결과는 같습니다. –
나는 이해하지 못한다. –
동안 {{ .... 루프 게임 } 경우 (isPaused) } (재생) OnPause : isPaused = TRUE; OnResume : IsPaused = false; –