Android:使用处理程序post.delayed两次

loa*_*g27 12 android delay handler postdelayed

我想知道是否可以使用handler().postdelayed两次?

我的意思是,我想创建一个按钮,单击它时会更改颜色并保持此状态1秒,然后,1秒后另一个按钮更改颜色.

我创建了以下代码:

在onclicklistener中:

btn3.setBackgroundColor(Color.WHITE);
  new Handler().postDelayed(new Runnable() {
      @Override
      public void run() {

        checkAnswer();
        waitAnswer();
        btnRsp3.setBackgroundResource(R.drawable.selector); 
      }
    }, 1000);
Run Code Online (Sandbox Code Playgroud)

检查答案:

 public void CheckAnswer(){
      btn1.setBackgroundColor(Color.GREEN);

  new Handler().postDelayed(new Runnable() {
  @Override
  public void run() {
  }
}, 500);

btn1.setBackgroundResource(R.drawable.selector);
}
Run Code Online (Sandbox Code Playgroud)

我认为问题出现在CheckAnswer上,因为它看起来并没有停留在这个postDelayed中并且步入waitAnswer.

谢谢

msh*_*msh 20

为什么你期望它在postDelayed上停止?postDelayed将Runnable放入Handler Looper队列并返回.由于两个处理程序都是在同一个looper上创建的,所以第二个runnable在第一个终止后执行(加上500 ms延迟的剩余时间)

更新:

你需要这样的东西

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        btn1.setBackgroundColor(Color.GREEN);
    }
}, 1000);
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        btn1.setBackgroundResource(R.drawable.selector);
    }
}, 2000);
Run Code Online (Sandbox Code Playgroud)