Android 是否有处理程序类的替换?
我喜欢Handler类的便利性;我可以轻松地将消息排队,甚至延迟消息。但是,所有代码都在UI线程上运行,这会导致动画出现口吃 是否有一个类(如Handler)不在UI线程上运行?您可以始终使用一个。不幸的是,我手头没有一个简单的例子Android 是否有处理程序类的替换?,android,Android,我喜欢Handler类的便利性;我可以轻松地将消息排队,甚至延迟消息。但是,所有代码都在UI线程上运行,这会导致动画出现口吃 是否有一个类(如Handler)不在UI线程上运行?您可以始终使用一个。不幸的是,我手头没有一个简单的例子 就个人而言,我倾向于直接使用java.util.concurrent类来处理不涉及主应用程序线程的事情(例如,LinkedBlockingQueue,ExecutorService).我对目前公认的答案有点困惑,这似乎意味着在非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
,可以将消息发送到上述非UIThread
中的Handler
进行处理
如果有什么好的理由不使用处理程序
/消息
类以这种方式发布要在非UI线程上完成的工作,那么我想知道。不过到目前为止,它对我来说一直很好。我所读到的不以这种方式使用处理程序的唯一原因是“处理程序用于将内容发布到UI线程”,这本身并不是一个良好的技术基础。Mark,感谢您花时间回答我的问题。我应该说得更具体一些:我真正想要的是一个消息队列,它提供了处理程序的所有便利,但不在主/UI线程上运行。我目前已经实现了一个基本的LinkedBlockingQueue和worker线程,但我想知道是否有一个经过良好测试的类供我使用。@someonewhere:“它提供了处理程序的所有便利,但没有在主/UI线程上运行”——嗯,我想HandlerThread
就是这样做的。“我目前已经实现了一个基本的LinkedBlockingQueue和工作线程,但我想知道是否有一个经过良好测试的类供我使用。”--实际上,LinkedBlockingQueue
可能比处理程序
测试得更好,只是因为它是标准Java的一部分,因此受到了相当大的打击;我在这里找到了一个很好的例子:我想我被你的代码示例中的活套
分散了注意力,因为我记得在某个地方读到,每当使用活套时,主线程都会起作用。@SomeoneSomewhere:嗯,是的,那是因为我那里的代码示例与HandlerThread
::拍额头:对不起!