Android 是否有处理程序类的替换?

Android 是否有处理程序类的替换?,android,Android,我喜欢Handler类的便利性;我可以轻松地将消息排队,甚至延迟消息。但是,所有代码都在UI线程上运行,这会导致动画出现口吃 是否有一个类(如Handler)不在UI线程上运行?您可以始终使用一个。不幸的是,我手头没有一个简单的例子 就个人而言,我倾向于直接使用java.util.concurrent类来处理不涉及主应用程序线程的事情(例如,LinkedBlockingQueue,ExecutorService).我对目前公认的答案有点困惑,这似乎意味着在非UI线程上使用处理程序是不可能的,因为

我喜欢Handler类的便利性;我可以轻松地将消息排队,甚至延迟消息。但是,所有代码都在UI线程上运行,这会导致动画出现口吃

是否有一个类(如Handler)不在UI线程上运行?

您可以始终使用一个。不幸的是,我手头没有一个简单的例子


就个人而言,我倾向于直接使用
java.util.concurrent
类来处理不涉及主应用程序线程的事情(例如,
LinkedBlockingQueue
ExecutorService
).

我对目前公认的答案有点困惑,这似乎意味着在非UI线程上使用
处理程序是不可能的,因为这是我经常做的事情,我认为这是众所周知的

在非UI
线程中

    @Override
    public void run() {
        Looper.prepare();
        ...
        mThreadHandler = new Handler() {            
            public void handleMessage(Message msg) {
                switch (msg.what) {
                    ...
                        break;
                    default:
                        break;
                }
            }
        };
        Looper.loop();
    }
使用
mThreadHandler
,可以将消息发送到上述非UI
Thread
中的
Handler
进行处理


如果有什么好的理由不使用
处理程序
/
消息
类以这种方式发布要在非UI线程上完成的工作,那么我想知道。不过到目前为止,它对我来说一直很好。我所读到的不以这种方式使用
处理程序的唯一原因是“处理程序
用于将内容发布到UI线程”,这本身并不是一个良好的技术基础。

Mark,感谢您花时间回答我的问题。我应该说得更具体一些:我真正想要的是一个消息队列,它提供了处理程序的所有便利,但不在主/UI线程上运行。我目前已经实现了一个基本的LinkedBlockingQueue和worker线程,但我想知道是否有一个经过良好测试的类供我使用。@someonewhere:“它提供了处理程序的所有便利,但没有在主/UI线程上运行”——嗯,我想
HandlerThread
就是这样做的。“我目前已经实现了一个基本的LinkedBlockingQueue和工作线程,但我想知道是否有一个经过良好测试的类供我使用。”--实际上,
LinkedBlockingQueue
可能比
处理程序
测试得更好,只是因为它是标准Java的一部分,因此受到了相当大的打击;我在这里找到了一个很好的例子:我想我被你的代码示例中的
活套
分散了注意力,因为我记得在某个地方读到,每当使用活套时,主线程都会起作用。@SomeoneSomewhere:嗯,是的,那是因为我那里的代码示例与
HandlerThread
::拍额头:对不起!