Android postdelayed处理程序无法启动运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android postdelayed处理程序无法启动运行相关的知识,希望对你有一定的参考价值。

我有延迟锁定系统当前工作的功能。 startTimer函数在onCameraFrame()函数中启动,该函数调用捕获的每个帧。如果调用我的下面的计时器,则会引发一个标志来锁定进程。

public void startTimer() {

    if (!isLockSystem()) {
        Handler handler = new Handler();
        setLockSystem(true);
        Log.d(TAG_DEBUG, " The system is locked !");
        handler.postDelayed(new Runnable(){
                    @Override
                    public void run() {
                        setLockSystem(false);
                        Log.d(TAG_DEBUG, " The system is unlocked !");
                    }
                }, 5000);
    } else {
        Log.d(TAG_DEBUG, " The system is already locked !");
    }
}

调用startTimer(),但永远不会返回run()函数。每当我触发startTimer时,按下“系统已被锁定”。

在重复过程中仅执行一次计时器的安全方法是什么,例如从摄像机捕获连续帧。

答案

问题是在onCameraFrame()方法中执行处理程序。

正确的方法是使用ShakeListener触发器在onCreate中调用此函数。

以上是关于Android postdelayed处理程序无法启动运行的主要内容,如果未能解决你的问题,请参考以下文章

处理程序 - postDelayed 执行两次

如何使用 Android 在 postDelayed 中使用 Intent?

Android Studio - 如何从片段中停止 handler.postDelayed?

如何从 postDelayed 添加的处理程序对象中删除可运行对象?

Android面试题解析美团/抖音/BAThandler.postdelayed方法中的延时,比如设置1000毫秒,程序会准确的在1000毫秒后执行吗?

Android:退出 Looper?