AsyncTask和Thread之间的真正区别

Fra*_*n b 16 multithreading android android-asynctask asynctaskloader difference

我一直在阅读关于此事的Android文档(AsyncTask,Thread)和vogella教程,但我还有疑问.

例如,我想从Android应用程序向服务器发送消息.我希望这个过程能够做出回应.我该怎么用?

我已经看到了他们Thread为非阻止UI 创建新的示例,但是这样我们没有进程的进度,你也必须处理响应,Thread因为该run()方法没有返回任何东西.

AsyncTask似乎比较好的选择Thread,但我不知道使用a AsyncTask而不是a 的后果是什么Thread.

Dwi*_* Ji 28

请阅读此博客

http://crazyaboutandroid.blogspot.in/2011/12/difference-between-android.html

和细节是:

Android Service,Thread,IntentService和AsyncTask之间的区别

什么时候用?

服务

   Task with no UI, but shouldn't be too long. Use threads within service for long tasks.
Run Code Online (Sandbox Code Playgroud)

线

- Long task in general.

- For tasks in parallel use Multiple threads (traditional mechanisms)
Run Code Online (Sandbox Code Playgroud)

的AsyncTask

- Small task having to communicate with main thread.

- For tasks in parallel use multiple instances OR Executor 
Run Code Online (Sandbox Code Playgroud)


Shi*_*ade 19

这里的所有其他答案都不完整,AsyncTask和Thread之间存在很大差异,即

线程可以从任何线程,主(UI)或后台触发; 但必须从主线程触发AsyncTask.

此外,在Android的较低API(不确定,可能API级别<11),AsyncTask的一个实例只能执行一次.

有关更多信息,请阅读Android服务,线程,IntentService和AsyncTask之间的区别

一般来说

线

  • 一般的长期任务.

  • 对于并行使用的任务多线程(传统机制)

的AsyncTask

  • 小任务必须与主线程通信.

  • 对于并行任务,使用多个实例或Executor