【安卓开发 】handler 使用令牌token取消延时执行的任务

令牌取消延时任务:
当然,我可以给你一个更详细的例子来说明如何使用令牌(token)来取消任务。在这个例子中,我们将创建一个简单的计时器,它在延迟后执行一些任务,并且我们可以使用令牌来取消这个计时器。

import android.os.Handler;
import android.os.Looper;
import android.util.Log;
public class ExampleHandler {
    private Handler handler = new Handler(Looper.getMainLooper());
    private Object token;
    public ExampleHandler() {
        // 创建一个唯一的令牌
        token = new Object();
    }
    public void startTimer(final int delayMillis) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                Log.d("Handler", "Timer finished!");
                // 执行一些任务
            }
        };
        // 延迟delayMillis后执行runnable,并附带令牌
        handler.postDelayed(runnable, delayMillis, token);
    }
    public void cancelTimer() {
        // 取消所有附带令牌的任务
        handler.removeCallbacksAndMessages(token);
    }
}

在这个例子中,我们创建了一个ExampleHandler类,它有一个Handler实例和一个唯一的令牌token。我们提供了一个startTimer方法来开始一个计时器,它会在延迟delayMillis后执行一个Runnable任务。我们还提供了一个cancelTimer方法来取消所有附带这个令牌的任务。
要使用这个类,你可以这样做:

public class MainActivity extends AppCompatActivity {
    private ExampleHandler exampleHandler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        exampleHandler = new ExampleHandler();
        // 开始一个延迟5秒的计时器
        exampleHandler.startTimer(5000);
        // 在3秒后取消计时器
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                exampleHandler.cancelTimer();
                Log.d("Handler", "Timer canceled!");
            }
        }, 3000);
    }
}

在这个 activity 的 onCreate 方法中,我们创建了一个ExampleHandler实例,并使用它来开始一个延迟5秒的计时器。然后,我们在3秒后使用另一个Handler来取消这个计时器。由于我们传递了tokenpostDelayed方法,当我们在3秒后调用cancelTimer时,只有附带这个令牌的任务会被取消。
这样,我们就可以在任务开始执行之前取消它,或者在它执行完毕后取消后续的任务。使用令牌来取消任务是一个很好的做法,因为它可以防止不小心取消错误的任务,并且可以让你在取消任务时提供更多的上下文信息。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值