关闭runOnUiThread

时间:2016-08-29 16:59:29

标签: android android-asynctask android-runonuithread

我运行了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);
}

1 个答案:

答案 0 :(得分:2)

我可以提出不同的解决方案吗?

在AsyncTask中实现onProgressUpdate(Params ...)方法。然后你可以从doInBackground(Params ...);

调用publishProgess

onProgressUpdate(Params ...)将在ui线程上运行。