线程和处理程序有什么区别?

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

Solutions Collecting From Web of "线程和处理程序有什么区别?"

线程是通用的处理任务,可以做大部分事情,但是他们不能做的一件事是更新UI。

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

例如,通过发布到处理程序的消息(Runnable)显示一个吐司或更新一个进度条,但是如果以线程的forms启动这个可运行的程序,则不能。

使用处理程序,您还可以拥有MessageQueuing,调度和重复等function。

我还没有遇到一个情况,我需要在Android的线程。

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

上述任务的处理程序。

AsyncTasks的下载/数据提取和轮询等

您可以在这里阅读开发人员的文章“ 无痛线程 ”更multithreading在Android。

更正:每个Handler实例都与单个线程和该线程的消息队列相关联。 他们不是代表他们自己的线索。 如此处所述。

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

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

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

我会build议AsyncTask而不是在所有情况下使用线程。

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

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

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