我稍微感到困惑之间的差异Handlers,AsyncTask并Threads在Android中.我在stackoverflow中阅读了很多博客和问题.
Handler是后台线程,提供您与UI进行通信.例如,更新进度条应该通过Handler.使用处理程序可以获得优势MessagingQueues,因此,如果要计划消息或更新多个UI元素或具有重复任务.
AsyncTask类似的,实际上它们使用Handler但不在UI线程中运行,因此它对于获取数据很有用,例如获取Web服务.稍后您可以与UI进行交互.
Thread然而,无法与UI交互,提供更多"基本"线程,你错过了所有的抽象AsyncTask.
但是,我想在服务中运行套接字连接.应该在处理程序或线程中运行,还是在AsyncTask?根本不需要UI交互.它在我使用的性能方面有所不同吗?
与此同时,文件已得到重大改进.
有关正确使用Threadsvs. Handlersvs. 的问题有很多AsyncTask.(像这里和这里)
这些问题很好地解决了何时使用什么问题.我的问题更多的是关于某些类型案件的绩效影响.
作为一个例子,我经常看到其他人编写代码,他们只使用Threads这些代码来为将来安排一些代码执行.每当我看到这一点时,我本能地感觉要重构代码以使用a Handler而只是延迟发布一个帖子runnable.
这是一个示例,其中一个Thread用于更新某些媒体播放的搜索栏mediaplayer,然后是我的方式.
我看到了很多东西:
if (positionTracker != null && positionTracker.isAlive()
&& !positionTracker.isInterrupted()) {
return;
}
positionTracker = new Thread(new Runnable() {
public void run() {
int currentPosition = 0;
int total = player.getDuration();
while (player != null && CurrentPosition < total) {
try {
Thread.sleep(1000);
currentPosition = player.getCurrentPosition();
} catch (InterruptedException e) {
return;
} catch (Exception e) {
return; …Run Code Online (Sandbox Code Playgroud)