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

问题描述 投票:0回答:1

我有延迟锁定系统当前工作的功能。 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时,按下“系统已被锁定”。

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

java multithreading timer handler
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.