java - 来自非 Activity 类的处理程序

标签 java android multithreading android-handler android-looper

我们可以执行

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?

是的,可以。

任何 HandlerThread相关联(不是 Activity 或其他对象)和 Thread 的消息队列。 处理程序 post/process MessagesRunnables到/ Looper 处理的队列.

当您在主线程中(例如在 Activity 类中)创建 Handler 时,您可以发布/发送消息和 Runnables (使用 >post()postDelayed()sendMessage() 等)到运行循环。但是,默认情况下,线程不会运行循环,除非您通过调用 Looper.prepare() 创建一个循环。首先和Looper.loop()之后。

如果在后台线程上创建的Handler将消息和Runnables发布到主线程队列

  • 将主线程的Looper传递给Handlerconstructor
  • 或使用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/

相关文章:

java - 从哪里开始编写软件代码?

java - 无法使用 try-with-resources 或 finally block

java - 在Java中,类中的枚举类型是静态的吗?

java - 无法解析字符串值 'kafka.bootstrap-servers' 中的占位符 "${kafka.bootstrap-servers}"

使用新导航组件处理 Android onBackPressed

android - 在android中的选项卡下有选项卡

android - 如何使用 Laravel 开发移动应用程序的后端(iOS 和 Android)?任何教程?

java - 使用线程更改数组中数据的有效方法

即使使用 SwingWorker,Java GUI 也会卡住

c# - 向 UI 添加内容时如何阻止 UI 被锁定