线程,UI线程,工作线程,异步任务

时间:2014-04-04 12:38:13

标签: android multithreading asynchronous

我在尝试理解Android中的ProcessesThreads概念时感到困惑。下面我提几个问题。也许那些是愚蠢的问题,但请帮我回答这些问题并澄清我的疑虑。

1)如果我创建一个将运行的线程?在Main(UI)Thread

2)如果我创建的线程在后台作为worker Thread运行,那么AsyncTask的用途是什么(我的意思是它比线程更好)?

3)我们可以在AsyncTask中创建一个Thread吗?

3 个答案:

答案 0 :(得分:7)

 1. If i create a thread where it will run? in Main(UI) thread/Worker Thread?

它将在不在主线程中的Worker线程中运行。

2.If my created thread runs on worker `Thread` then what is the use of `AsyncTask` (I mean how it is better than thread)?

AsyncTask用于与主线程进行通信。例如,您正在从Internet下载文件,因此您需要更新Activity中的下载进度,以便更好地适应此AsyncTask。您将使用onProgressUpdate()方法更新The Ui。因此您可以轻松地与UI线程进行通信。

 3)Can we create a thread in Async task?

是的,您可以创建它,但它没用,因为AsyncTask的{​​{1}}方法已经在另一个doInBackGround()中运行,因此无需创建新的Thread } Thread

答案 1 :(得分:6)

  1. 如果您要在Activity中创建一个主题。它将作为一个单独的线程运行。默认情况下,Activity在UI线程中运行。它也称为主线程。
  2. 异步任务只是一个工作线程,用于运行不会阻止UI线程的后台操作。例如:下载文件。
  3. Asynctask本身是一个separte线程,它有自己的生命周期。

答案 2 :(得分:1)

1)它将作为工作线程运行,而不是在UI线程上运行。

2)异步任务使您可以在任务完成之前或之后执行某些操作。在从Internet连接或类似操作获取数据后必须更新UI值时特别有用。也适用于progressdialogs。 它是一种类(扩展AsyncTask),所以它有更多的结构,然后才启动一个线程。

3)是的,你可以。这对你来说是否非常有用,是一个完全不同的问题。