1

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);
}
4

1 に答える 1

2

別のソリューションを提案できますか?

AsyncTask に onProgressUpdate(Params...) メソッドを実装します。その後、doInBackground(Params...); から publishProgess を呼び出すことができます。

onProgressUpdate(Params...) は UI スレッドで実行されます。

于 2016-08-29T17:04:43.683 に答える