안드로이드 개발 질문/답변
(글 수 45,052)
제가 지금 표면뷰와 쓰레드 이용해서 한번 게임 만들어볼려고 하는데요
위 2개를 이용하면 계속적으로 화면 갱신이 가능하잔아요 ㅎ
근데 처음실행할때는 터치하면 터치한데로 프로그램 잘돌아가는
실행하다가 백그라운드로 넘어갔다가 다시 돌아오면 프로그램 쓰레드는 돌아가는데
터치가 안먹혀서...;;; 이런 때 어떻게 해야하죠?
표면뷰 콜백 메소드 세개중에
크리에이트에 쓰레드 start()실행하고요
디스트로이에 쓰레드 조인시켜놨는데....
체인지에는 아무것도 안했어요
혹시 이런 비슷한 일 알고계시면 조언좀 제발... 사소한거라도 감사히 받겠습니다~^^
아그리고 추가 질문인데요
Drawable[ ] da = new Drawable[ 3];
da[0]=res.getDrawable(R.drawable.xxxx);
da[1]=res.getDrawable(R.drawable.xxxx);
da[2]=res.getDrawable(R.drawable.xxxx);
이런식으로 xxxx라는 한개의 이미지를 da배열에 다 집어넣는겁니다.
코드로는 문제가 없는데 실행하면 알수없는 문제로 강제종료되버려서요;;
보통 그런 경우는 스레드에서 참조하는 View가 실제 위에서 도는 뷰가 아닌 경우가 대부분입니다.
create에서 스레드를 생성하고 destroy에서 스레드 닫고, 근데 백그라운드 가면 destroy는 안갈테니까..
액티비티가 SingleTask로 실행되지 않는다면.... 또 다른 Activity가 생기고 역시 스레드가 또생기는데요...
이런 경우의 수를 감안하지 않은채로 보통 개발하기 때문에 스레드가 참조하는 View가 꼬여버리는 경우가 심심찮게 생깁니다.
가장 빠른길은 Activity를 SingleTask로 실행하는거구요...
되도록 스레드로 실행할만한 그런 비동기적인 작업이라면 서비스로 돌리는걸 추천합니다.
메시징이야 좀더 복잡해질지 모르겠는데....
퍼포먼스 자체도 아마 Activity에서 스레드로 하는것 보다 서비스에서 스레드로 하는게 좀더 좋을거구요.