1
AsyncTask가 실행 중이고이 스레드에서 runOnUiThread를 시작하여 내보기를 조작합니다. 내 AsyncTask를 닫으면 RunOnUiThread가 AsyncTask를 닫은 후 1 시간 더 오래 실행됩니다. runOnUiThread를 닫으려면 어떻게해야합니까? 감사!닫기 runOnUiThread
@Override
protected String doInBackground(String... params) {
while(running.get()) {
// Background thread sleeps
try {
Thread.sleep(produceRadwaste_countdown * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// UI thread touching some view elements
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
radwasteTon.incrementStack();
}
});
// Delete thread if player is game over
if(GameLogic.isGameOver()) {
clearThreads();
}
}
return "Running";
}
public void clearThreads() {
running.set(false);
this.cancel(true);
}
감사합니다. UI에서 작동하고 runOnUiThread가 필요하지 않지만 스레드를 취소 한 후에도 1 시간 후에 실행됩니다. – Ghork
전체 프로세스를 logcat으로 확인했는데 때로는 실행하기 때문에 약간 이상했습니다. boolean 이상의 게임을 검사하기 전에 publishProgress()를 호출하고 publishProgress()를 실행하기 전에 부울을 검사하기도합니다. 이제는이 두 작업 사이에 작은 Thread.sleep을 수행하고 있습니다. 그러나 이것이 최선의 해결책은 아니라고 생각합니다. – Ghork
AsyncTask에는 최대 풀 크기가 있으며이 스레드는 각 게임 아이콘에서 실행되며 약 5 - 10 개의 항목을 갖기 때문에 내 게임에는 매우 나쁜 것이 될 것이라고 읽었습니다. – Ghork