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处理程序无法启动运行的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Android 在 postDelayed 中使用 Intent?
Android Studio - 如何从片段中停止 handler.postDelayed?
如何从 postDelayed 添加的处理程序对象中删除可运行对象?
Android面试题解析美团/抖音/BAThandler.postdelayed方法中的延时,比如设置1000毫秒,程序会准确的在1000毫秒后执行吗?