我运行了AsyncTask,在这个线程中我启动了一个runOnUiThread来操作我的视图。如果我关闭了我的AsyncTask,那么在我关闭AsyncTask之后runOnUiThread仍会运行1次。如何关闭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);
}
答案 0 :(得分:2)
我可以提出不同的解决方案吗?
在AsyncTask中实现onProgressUpdate(Params ...)方法。然后你可以从doInBackground(Params ...);
调用publishProgessonProgressUpdate(Params ...)将在ui线程上运行。