同步处理程序线程

Synchronize handler thread

我正在 运行ning 一个递归处理程序,其中 运行 有一些代码。我正在使用 HandlerThread 发布处理程序。我想 运行 只有在上一个调用完成后才进行下一个递归调用。 有可能这样做吗?如果不是,还有什么选择。

    HandlerThread ht = new HandlerThread();
    ht.start();
    Handler h = new Handler(ht.getLooper());
    h.post(new Runnable() {
         @override
         public void run(){
              //Some code
              h.postDelay(this,1000);
         }
    });

您的代码应该可以工作,但是如果您想要一个完整的示例,说明如何使用 HandlerThread 递归地 运行 一些东西,这里是:

public class Main2Activity extends AppCompatActivity {

    private MyWorkerThread mWorkerThread;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        mWorkerThread = new MyWorkerThread("myWorkerThread");
        final Runnable task = new Runnable() {
            @Override
            public void run() {
                Log.d("TAG", "Done.");
                mWorkerThread.postTask(this);
            }
        };
        mWorkerThread.start();
        mWorkerThread.prepareHandler();
        mWorkerThread.postTask(task);
    }

    @Override
    protected void onDestroy() {
        mWorkerThread.quit();
        super.onDestroy();
    }
}

class MyWorkerThread extends HandlerThread {

    private Handler mWorkerHandler;

    public MyWorkerThread(String name) {
        super(name);
    }

    public void postTask(Runnable task){
        mWorkerHandler.postDelayed(task, 1000); // set timeout which needed
    }

    public void prepareHandler(){
        mWorkerHandler = new Handler(getLooper());
    }
}

不要忘记在 onDestroy

中调用 handlerThread.quit()