繁体   English   中英

Thread和Handler之间有什么区别

[英]What is the difference between a Thread and a Handler

我试图找出线程和处理程序之间的区别。 创建新处理程序是否会创建新线程? 当使用post()运行新的处理程序时,它是否正在创建一个新线程? 请解释

线程是可以执行大多数操作的通用处理任务,但是他们不能做的一件事是更新UI。

另一方面,处理程序绑定到允许您与UI线程通信的线程(更新UI)。

因此,例如通过发布到处理程序的消息(Runnable)显示toast或更新进度条但是如果您将此runnable作为线程启动则不能。

使用处理程序,您还可以使用MessageQueuing,计划和重复。

我还没遇到我需要一个android线程的情况。

我主要使用AsyncTasks和Handlers的组合。

上述任务的处理程序。

AsyncTasks用于下载/数据获取和轮询等。

你可以在这里阅读开发者文章“ 无痛线程 ”,以获得更多的android线程。

更正:每个Handler实例都与一个线程和该线程的消息队列相关联。 它们不是代表自己的线程。 作为描述在这里

线程定义正在运行的进程。 就像你在android中有一个主(UI线程)。 和所有其他线程在后台运行。(并行)。

处理程序完全不同,它就像启动处理程序中定义的任务一样。

要清除你的困惑,并在android中执行线程,你必须阅读: http//android-developers.blogspot.com/2009/05/painless-threading.html

我会建议AsyncTask而不是在所有情况下使用Thread。

为什么我们使用带线程的处理程序:

当我们在android中安装一个应用程序然后它为该应用程序创建一个名为MAIN UI Thread的线程,所有活动都在该线程内运行,通过android单线程模型规则我们无法直接访问UI元素(位图,textview等...)在该活动中定义的另一个线程。

因此,如果想要通过另一个线程访问Main UI Thread元素,那么我们将使用处理程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM