我们可以执行
handler.postDelayed(runnable,400)
来自非Activity
类?
我有一个 Controller 类,假设它是一个适配器。我们可以在那里使用 Handler
吗?
我尝试使用断点调试我的应用程序,但控件未到达
handler.postDelayed(runnable,400)
有人可以帮我解决这个问题吗?
实际上我正在使用OCR。如果进行了某些匹配,我想自动返回到我的主要 Activity 。我想它是一个循环器。我还需要拍摄它的照片。为此,我需要使用处理程序。
最佳答案
Can we execute
handler.postDelayed(runnable, 400)
from a non-Activity
class?
是的,可以。
任何 Handler
与Thread
相关联(不是 Activity
或其他对象)和 Thread
的消息队列。 处理程序
post/process Messages
和 Runnables
到/自 Looper
处理的队列.
当您在主线程中(例如在 Activity
类中)创建 Handler
时,您可以发布/发送消息和 Runnables
(使用 >post()
、postDelayed()
、sendMessage()
等)到运行循环。但是,默认情况下,线程不会运行循环,除非您通过调用 Looper.prepare()
创建一个循环。首先和Looper.loop()
之后。
如果在后台线程上创建的Handler
将消息和Runnables
发布到主线程队列
- 将主线程的
Looper
传递给Handler
的constructor - 或使用
new Handler(Looper.getMainLooper())
。
I tried debugging my app using break points, but the control is not reaching.
我假设您的代码逻辑永远不会到达“控件”,或者处理程序
是在后台线程中创建的,而没有准备和循环Looper
,以便可运行
无法由处理程序
处理。
关于java - 来自非 Activity 类的处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39665090/