안드로이드 개발 질문/답변
(글 수 45,052)
제목이 거창한데요;
다들 아시는 루나랜더 어플과 같은 게임을 만들어 보려고 합니다.
루나랜더의 경우
[ activity [ surfaceview [ thread ] ] ]
와 같은 구조로 되어있고,
thread의 run() 함수 내에서 while문으로 loop를 돌면서 화면을 렌더링합니다.
화면을 멈추거나 할때도 while문은 계속 돌면서 pause 화면을 보여줍니다.
while문이 멈추는 것은 곧 thread의 종료를 의미하니까요.
thread는 해당 activity가 종료될 때까지 계속 loop를 돕니다.
그런데 이 경우, 전화가 오거나 home 버튼을 눌러 바탕화면으로 나가거나 할 경우,
어플은 pause 상태로 놓았다 하더라도 cpu는 절반 이상 사용을 하고 있게 됩니다.
while loop가 계속 도니까요.
그렇다고 while을 멈추면 한번 정지된 thread는 재시작이 안되므로
(이거 맞는지요? 전 이렇게 알고있습니다만...)
현재 상태를 pref에 저장해 놓고 잠시 activity를 종료했다가 재시작이 될때
새로 activity를 띄우고 thread를 시작하면 일단 그사이에 cpu 사용은 하지 않습니다.
아니면 cpu 사용을 감안하고 pause 해놓던지 해야지요...
제가 알고 있는 지식으로는 이렇게까지밖에 생각이 안되는데,
실제 게임을 제작할때는 뭔가 더 효율적인 방법을 사용할 것 같습니다.
뭔가 조언을 주시면 감사하겠습니다. :)
그걸 사용해서 스레드를 사용하지 않고 게임을 만들더라구요..
소스는 올려드릴께요~ 책에도 설명이 자세히 되있지는 않더라구요..