如何在onClick中重置postDelayed runnable的时间?

use*_*806 5 mobile android onclick

我有一个从服务器填充的listView.在ListItem的onClick中,我显示了一个按秒数的按钮,我再次使它不可见.每次调用onClick时如何重置时间?这是我的listItem onClick:

private void displayInCallButton() {


    mButton.setEnabled(true);

    if (canDisplayInCallControlls) {
        canDisplayInCallControlls = false;

        fadeInAnimation(mButton);
        mButton.setEnabled(true);

        mFrontView.postDelayed(new Runnable() {
            public void run() {
                fadeOutAnimation(mButton);
                mButton.setEnabled(false);
                hasAnimationEnded = true;
                canDisplayInCallControlls = true;


            }
        }, 5000);

    }
}
Run Code Online (Sandbox Code Playgroud)

先感谢您.

M.P*_*ran 12

您必须删除回调并使用具有重置时间的新回调再次设置它.

首先,将回调设置为

Runnable myRunnable = new Runnable() {
   @Override
   public void run() {
    fadeOutAnimation(mButton);
    mButton.setEnabled(false);
    hasAnimationEnded = true;
    canDisplayInCallControlls = true;
   }
};
Run Code Online (Sandbox Code Playgroud)

然后将其设置为mFrontView,

mFrontView.postDelayed(myRunnable,5000)
Run Code Online (Sandbox Code Playgroud)

如果要重置,请执行此操作

mFrontView.removeCallbacks(myRunnable);
mFrontView.postDelayed(myRunnable, 2000);
Run Code Online (Sandbox Code Playgroud)