1
私はAsyncTaskを実行しており、このスレッドでは私のビューを操作するためにrunOnUiThreadを開始します。 AsyncTaskを閉じると、AsyncTaskを閉じた後もrunOnUiThreadが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);
}
私はrunOnUiThreadは必要ありませんが、スレッドをキャンセルした後も1回実行します – Ghork
これでlogcatを使用してプロセス全体をチェックしました。 boolean以上のゲームをチェックする前にpublishProgress()を呼び出し、publishProgress()を実行する前にbooleanをチェックすることがあります。今私はこれら両方の操作の間に少しThread.sleepをやっていますが、これはうまく動作しますが、これは最善の解決策ではないと思います。 – Ghork
私はAsyncTaskに最大プールサイズがあり、このゲームは非常に悪いことだと読んでいます。このスレッドは各ゲームアイコン上で実行されるため、約5〜10個のアイテムがあります。 – Ghork