android - 如何在 Android 代码中提前取消处理程序?

标签 android android-handler

如果服务未完成,我会创建 1 分钟的延迟计时器来关闭服务。看起来像这样:

private Handler timeoutHandler = new Handler();

onCreate() 内部

timeoutHandler.postDelayed(new Runnable()
        {
            public void run()
            {
                Log.d(LOG_TAG, "timeoutHandler:run");

                DBLog.InsertMessage(getApplicationContext(), "Unable to get fix in 1 minute");
                finalizeService();
            }
        }, 60 * 1000);

如果我在这 1 分钟之前完成工作 - 我想取消这个延迟的事情,但不确定如何取消。

最佳答案

你不能真正使用匿名 Runnable 来做到这一点。将 Runnable 保存到命名变量怎么样?

Runnable finalizer = new Runnable()
    {
        public void run()
        {
            Log.d(LOG_TAG, "timeoutHandler:run");

            DBLog.InsertMessage(getApplicationContext(), "Unable to get fix in 1 minute");
            finalizeService();
        }
    };
timeoutHandler.postDelayed(finalizer, 60 * 1000);

...

// Cancel the runnable
timeoutHandler.removeCallbacks(finalizer);

关于android - 如何在 Android 代码中提前取消处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5885587/

相关文章:

android - Linux内核的ftrace输出格式

android - Session.getActiveSession() 在启动应用程序时返回 null,尽管我已连接

android - savedInstanceState 给了我一个错误的值

android - 具有 2 列和自动调整大小的图像的 RecyclerView

java - Google elevation API 和限制率

java - 如何更改操作栏标题

java - Android:使用 Messengers for IPC 实现同步/阻塞 API

android - 一起使用 Android Handler 和 Volley 时应用程序崩溃

android - 架构组件: Observer keep observing even after removing it on onDestroy

android - 在 finish() 之后,发布到 Activity 的 Handler 的 Runnables 将继续执行多长时间?