繁体   English   中英

非活动类的处理程序

[英]Handler from a non-Activity class

我们可以执行吗

handler.postDelayed(runnable,400)

来自非Activity课?

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

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

handler.postDelayed(runnable,400)

有人可以帮我吗?

实际上,我正在使用OCR。 如果进行了某些匹配,我想自动返回到我的主要活动。 我想它是个弯针。 我还需要拍摄照片。 为此,我需要使用处理程序。

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

是的你可以。

任何Handler都与Thread (不是Activity或另一个对象)和Thread的消息队列相关联。 Handlers后/ 处理 MessagesRunnables到/ 由处理的队列Looper

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

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

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

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

我认为无论是你的代码的逻辑从来没有达到“控制”或handler ,而不准备和循环后台线程内创建Looper ,以便runnable不能被处理的handler

我用定时器。 它为我工作。 大声笑。

    new Timer().schedule(new TimerTask() {
        @Override
        public void run() {
            Intent data = new Intent();
            data.putExtra(OcrCaptureActivity.TextBlockObject, textBlock.getValue());
            Log.d("Read Text : ", textBlock.getValue());
            Base.base_activity.setResult(CommonStatusCodes.SUCCESS, data);
            Base.base_activity.finish();
        }
    }, POST_DELAYED_TIME);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM