来自非 Activity 类的处理程序

srv*_*242 2 java multithreading android android-handler android-looper

我们可以执行吗

handler.postDelayed(runnable,400)
Run Code Online (Sandbox Code Playgroud)

来自非Activity阶级?

我有一个控制器类,假设它是一个适配器。我们可以在那里使用吗Handler

我尝试使用断点调试我的应用程序,但控制未到达

handler.postDelayed(runnable,400)
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

其实我用的是OCR。如果进行了某些匹配,我想自动返回到我的主要活动。我想它是一个循环器。我还需要拍摄它的照片。为此,我需要使用处理程序。

Oni*_*nik 5

handler.postDelayed(runnable, 400)我们可以从非类执行吗Activity

是的你可以。

AnyHandler与 a Thread(不是一个Activity或另一个对象)和Thread的消息队列相关联。Handlers发布/处理 Messages以及处理的队列中Runnables发送/处理。Looper

Handler当您在主线程中(例如在类中)创建 时,您将消息 和(使用、等)Activity发布/发送到运行循环。但是,默认情况下,线程不会运行循环,除非您通过调用first 和after 创建循环。Runnablespost()postDelayed()sendMessage()Looper.prepare()Looper.loop()

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

  • 将主线程传递Looper给 的构造Handler函数
  • 或使用new Handler(Looper.getMainLooper()).

我尝试使用断点调试我的应用程序,但控件未到达。

我假设您的代码逻辑永远不会到达“控件”,或者是handler在后台线程中创建的,而没有准备和循环Looper,因此runnable无法由handler.