Android后延迟处理程序无法启动运行

时间:2018-09-20 19:59:52

标签: java multithreading timer handler

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

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

1 个答案:

答案 0 :(得分:0)

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

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