Android 线程、UI线程、工作线程、异步任务

Android 线程、UI线程、工作线程、异步任务,android,multithreading,asynchronous,Android,Multithreading,Asynchronous,当我试图理解Android中的进程和线程概念时,我感到困惑。下面我提几个问题。也许这些都是愚蠢的问题,但请帮我回答这些问题并澄清我的疑问 1) 如果我创建一个线程,它将在哪里运行?在主(UI)线程中 2) 如果我创建的线程作为工作线程在后台运行,线程那么异步任务有什么用(我的意思是它比线程好多少) 3) 我们可以在AsyncTask中创建线程吗 如果您正在活动中创建线程。它将作为单独的线程运行。默认情况下,活动在UI线程中运行。它也称为主线程 异步任务只不过是一个工作线程,用于运行不会阻塞UI线

当我试图理解Android中的
进程
线程
概念时,我感到困惑。下面我提几个问题。也许这些都是愚蠢的问题,但请帮我回答这些问题并澄清我的疑问

1) 如果我创建一个线程,它将在哪里运行?在主(UI)
线程中

2) 如果我创建的线程作为工作线程在后台运行,
线程
那么
异步任务
有什么用(我的意思是它比线程好多少)

3) 我们可以在AsyncTask中创建线程吗

  • 如果您正在活动中创建线程。它将作为单独的线程运行。默认情况下,活动在UI线程中运行。它也称为主线程
  • 异步任务只不过是一个工作线程,用于运行不会阻塞UI线程的回溯操作。下载一个文件
  • Asynctask本身就是一个单独的线程,它有自己的生命周期 它将在工作线程而不是主线程中运行

    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下载文件,因此您希望在
    活动中更新下载进度。对于此AsyncTask,更适合。您将使用
    onProgressUpdate()
    方法更新Ui。因此,您可以轻松地与Ui线程通信

     3)Can we create a thread in Async task?
    
    是的,您可以创建它,但它是无用的,因为
    AsyncTask
    有一个
    doInBackGround()
    方法,该方法已经在不同的
    线程中运行,因此无需在
    AsyncTask
    内部创建新的
    线程,它将作为工作线程运行,而不是在UI线程上

     3)Can we create a thread in Async task?
    
    2) 异步任务使您能够在任务完成之前或之后执行某些事情。在从internet连接或类似操作获取数据后必须更新UI值时特别有用。也适用于progressdialogs。 它是一种类型的类(扩展了AsyncTask),因此它比仅仅启动一个线程有更多的结构

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

    请参考此