【问题标题】:Android postdelayed handler could not initiate runAndroid postdelayed 处理程序无法启动运行
【发布时间】:2018-09-20 19:59:51
【问题描述】:

我有延迟锁定系统当前工作的功能。 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】:

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

    正确的方法是在 onCreate 中调用这个函数,触发器是 ShakeListener。

    【讨论】:

      猜你喜欢
      • 2016-06-27
      • 2014-02-21
      • 2017-03-23
      • 1970-01-01
      • 2016-05-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      相关资源
      最近更新 更多