Runnable只运行一次

问题描述 投票:1回答:3

我需要多次执行任务,直到满足某些条件。代码:

handler = new Handler();
runnableCode = new Runnable() {
   @Override
   public void run() {
       doThings();
   }
};
handler.postDelayed(runnableCode, 200);

方法doThings:

private void doThings(){
    //conditions are met
    stopRunnable();

}

方法stopRunnable:

private void stopRunnable(){
    handler.removeCallbacks(runnableCode);
}

这样,doThings()方法只执行一次。我该怎么办?

谢谢

android runnable
3个回答
2
投票

我建议你试试:

handler=new Handler();
runnableCode = new Runnable() {
    @Override
    public void run() {
    doThings();
    if(condition){
        handler.postDelayed(runnableCode, 200);
    }
    }
};
handler.postDelayed(runnableCode, 200);

方法stopRunnable:

private void stopRunnable(){
    handler.removeCallbacksAndMessages(null);
}

0
投票

PostDelayed告诉它在200ms内调用unnable。如果你希望在另一个200ms内再次调用它,你的runnable必须再次将自己发布到Handler。


0
投票

这很简单,递归调用你的Runnable如下:

handler=new Handler();

            runnableCode = new Runnable() {
                @Override
                public void run() {

                    doThings();
                    // just add this line 
                    handler.postDelayed(this, 200);


                }

            };
    handler.postDelayed(runnableCode, 200);
© www.soinside.com 2019 - 2024. All rights reserved.