2

我们可以执行吗

handler.postDelayed(runnable,400)

来自非Activity班级?

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

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

handler.postDelayed(runnable,400)

任何人都可以帮我解决这个问题吗?

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

4

2 回答 2

4

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

是的你可以。

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

当您Handler在主线程中(例如在Activity课堂上)创建 a 时,您将消息和Runnables(使用post()postDelayed()sendMessage())发布/发送到运行循环。但是,默认情况下,线程不会运行循环,除非您创建一个调用Looper.prepare()first 和Looper.loop()after 的循环。

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

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

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

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

于 2016-09-24T00:18:52.843 回答
0

我用了定时器。它对我有用。哈哈。

    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);
于 2016-09-24T06:36:34.073 回答