2012-02-24 92 views
18

我想要找出线程和处理程序之间的区别。创建一个新的处理程序是否会创建一个新的线程?当一个新的处理程序使用post()运行时,它是否创建了一个新的线程?请详细解释线程和处理程序有什么区别

回答

20

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

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

因此,举例来说,通过发布到处理程序的消息(Runnable)显示一个进程或更新进度条,但如果以线程的形式启动此可运行的程序,则无法进行此操作。

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

我还没有遇到一种情况,我需要在android中的线程。我主要使用AsyncTasks和Handlers的组合。

上述任务的处理程序。

AsyncTasks下载/数据的读取和查询等

你可以在这里阅读开发商的文章“Painless Threading”在Android的更多线程。

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

+3

处理程序不是线程 – Selvin 2012-02-24 19:07:27

+0

正确,已更正 – MahdeTo 2012-02-24 19:16:11

2

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

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

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

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

0

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

当我们安装在Android的应用程序则创建该应用程序调用主UI线程,该线程中运行的所有活动,通过Android的单线程模式线程规则我们无法直接访问该活动内定义的另一个线程的UI元素(位图,文本视图等)。

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

相关问题