我试图找出线程和处理程序之间的区别。创建新处理程序是否会创建新线程?当使用post()运行新的处理程序时,它是否正在创建一个新线程?请解释
答案 0 :(得分:21)
线程是可以完成大部分工作的通用处理任务,但是他们不能做的一件事就是更新UI。
另一方面,处理程序绑定到允许您与UI线程通信的线程(更新UI)。
例如,通过发布到处理程序的消息(Runnable)显示toast或更新进度条但是如果你将此runnable作为线程启动则不能。
使用处理程序,您还可以使用MessageQueuing,schedule和repeat。
我还没遇到需要android的线程的情况。
我主要使用AsyncTasks和Handlers的组合。
上述任务的处理程序。
AsyncTasks用于下载/数据获取和轮询等。
您可以在此处阅读开发人员文章“Painless Threading”以获取更多线程安装。
校正: 每个Handler实例都与一个线程和该线程的消息队列相关联。它们不是代表自己的线程。正如here所述。
答案 1 :(得分:2)
线程定义正在运行的进程。就像你在android中有一个主(UI线程)。和所有其他线程在后台运行。(并行)。
处理程序完全不同,就像启动处理程序中定义的任务一样。
要清除你的困惑,并在android中执行线程,你必须阅读: http://android-developers.blogspot.com/2009/05/painless-threading.html
我建议使用AsyncTask而不是在所有情况下使用Thread。
答案 2 :(得分:0)
为什么我们使用带线程的处理程序:
当我们在android中安装应用程序时,它会为该应用程序创建一个名为MAIN UI Thread的线程,所有活动都在该线程内运行,通过android单线程模型规则我们无法访问UI元素(位图,textview等等)。 )直接为该活动中定义的另一个线程。
因此,如果想要通过另一个线程访问Main UI Thread元素,那么我们将使用处理程序。