여러 레벨을 포함하는 Android 기반 게임을 제작 중입니다.AsyncTask를 사용하여 무작위로 ImageView의 배경색을 변경하십시오.
레벨 1 ImageView를 빨간색에서 녹색으로 빠르게 임의의 간격으로 변경하려면 사용자가 녹색 점일 때 ImageView를 클릭해야합니다.
임의의 시간에 ImageView의 배경색을 임의로 변경하기 위해 별도의 클래스를 사용하여 AsyncTask를 실행하고 있습니다. 이 코드는 while 루프에 포함되어 있으며 levelPoints가 50에 도달하는지 확인합니다 (레벨 1 클래스의 OnClick 이벤트에 따라이 포인트가 올라갑니다).
다음은 문제입니다. - 배경색이 한 번 변경되고 while 루프 중에 변경되지 않습니다. Log.v를 사용하여 난수 및 수준 점의 상태를 확인했습니다.이 점은 루프가 정상적으로 작동하고 있음을 보여줍니다.
프로젝트는 WIP이지만이 섹션은 초록색을 50 회 클릭하여 루프를 끝내서 테스트 할 수있는 단계에 있어야한다고 생각했습니다. 그렇지 않다.
while 루프 중에 색상이 변경되지 않는 이유는 도움이됩니다. 비슷한 문제에 대해 StackOverflow 및 다른 사이트/포럼을 검색했으며 비슷한 자연을 찾을 수 없습니다. 여기
은 GitHub의에 해당하는 파일에 대한 링크입니다 당신이 postExecute 방법에서 UI에 아무것도를 업데이트해야 백그라운드 스레드에서 실행 doInBackground 방법에서 색상을 업데이트하기 때문에https://github.com/CodeAddiction/Reactor
보기를 다시 작성해야합니다. 값이 변경되었지만 UI에 다시 그려지고 반영되지 않았습니다. – Jimmy
UI 스레드에서 ** invalidate() **를 사용하고 ** AsyncTask 클래스에서 ** postinvalidate() **를 사용합니까? – Stuey
그 방법에 대해서는 잘 모르겠습니다. 하지만 asynctask에 콜백 메소드를 추가하여 메인 쓰레드에서 실행시킬 수 있습니다. 그런 다음 주 스레드에서 백그라운드를 업데이트 할 수 있습니다. – Jimmy