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

4
我在了解Android中的进程(Processes)和线程(Threads)概念时感到困惑。以下我列出了几个问题,也许这些问题有些愚蠢,请帮助我回答这些问题,并澄清我的疑惑。
1)如果我创建一个线程,它会在哪里运行?在主(UI)线程中吗?
2)如果我创建的线程作为后台工作线程运行,那么AsyncTask有什么用处(我是说它比线程好在哪里)?
3)我们可以在AsyncTask中创建线程吗?

请参考此链接:https://dev59.com/tnA75IYBdhLWcg3wfpKr#3264468 - kaushik parmar
3个回答

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

该操作将在工作线程中运行,而非主线程。

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用于与主线程通信。例如,您正在从互联网上下载文件,因此您想要在Activity中更新下载进度。对于此类情况,AsyncTask非常适合。您可以使用onProgressUpdate()方法更新UI,因此您可以轻松地与UI线程通信。

 3)Can we create a thread in Async task?

是的,你可以创建它,但是这是没有意义的,因为AsyncTask已经有一个在不同的Thread中运行的doInBackground()方法,所以没有必要在AsyncTask内部创建新的Thread


6
  1. 如果您在 Activity 中创建一个线程,它将作为单独的线程运行。默认情况下 Activity 在 UI 线程中运行,也称为主线程。
  2. AsyncTask 是一个工作线程,用于运行不会阻塞 UI 线程的后台操作,例如下载文件。
  3. Asynctask 本身是一个独立的线程,并且具有自己的生命周期。

1

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

2) 异步任务(Async Task)使您可以在任务完成之前或之后执行某些操作。在从互联网连接获取数据或类似操作后更新UI值时特别有用。它是一种类(扩展AsyncTask),因此比仅启动线程具有更多结构。

3) 可以。但这是否对您非常有用是完全不同的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接