Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自非活动类的处理程序_Java_Android_Multithreading_Android Handler_Android Looper - Fatal编程技术网

Java 来自非活动类的处理程序

Java 来自非活动类的处理程序,java,android,multithreading,android-handler,android-looper,Java,Android,Multithreading,Android Handler,Android Looper,我们能执行吗 handler.postDelayed(runnable,400) 从非活动类 我有一个控制器类,假设它是一个适配器。我们可以在那里使用处理程序吗 我尝试使用断点调试我的应用程序,但控件无法到达 handler.postDelayed(runnable,400) 有人能帮我吗 事实上我用的是OCR。如果进行了某些匹配,我希望自动返回到我的主要活动。我想这是一个活套。我还需要拍下它的照片。为此,我需要使用一个处理程序 我们能否从非活动类执行handler.postDelayed(

我们能执行吗

handler.postDelayed(runnable,400)
从非
活动

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

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

handler.postDelayed(runnable,400)
有人能帮我吗

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

我们能否从非
活动
类执行
handler.postDelayed(runnable,400)

是的,你可以

Any与一个(不是
活动
或另一个对象)和
线程
的消息队列相关联<代码>处理程序post/process和到/来自由处理的队列

在主线程中创建
处理程序时(例如在
活动
类中),可以将消息和
可运行文件
(使用
post()
postDelayed()
sendMessage()
等)发布/发送到正在运行的循环中。但是,默认情况下,线程不会运行循环,除非您创建了一个调用first和aftern的循环

如果在后台线程上创建的
处理程序
将向main的线程队列发布消息和
可运行文件

  • 将主线程的
    活套
    传递给
    处理程序
  • 或者使用
    新处理程序(Looper.getMainLooper())
我尝试使用断点调试我的应用程序,但控件无法到达


我假设您的代码逻辑永远不会到达“控件”,或者在后台线程中创建
处理程序
,而不准备并循环
循环器
,因此
可运行的
无法由我使用的
处理程序处理。这对我有用。哈哈

    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);

当然,您可以从非活动类使用
处理程序
。为什么你会认为不是这样?请提供更多的信息。您在哪里创建了
处理程序
?控制不到哪里?另外,
postDelayed()
返回布尔值。是
true
还是
false
?您应该使用@Onik建议的处理程序。它非常简单:
(新的处理程序(Looper.getMainLooper()).postDelayed(新的MyRunnable(),delay);
使用一个TimerTask,它只是另一个线程,如果这成为一件事,你将无法更新UI。