AsyncTask 和 Thread 区别

一、AsyncTask是封装好的线程池,比起Thread+Handler的方式,AsyncTask在操作UI线程上更方便,因为onPreExecute()、onPostExecute()及更新UI方法onProgressUpdate()均运行在主线程中,这样就不用Handler发消息处理了;
二、我不太同意封装好就会影响性能的说法,在我实际的运用中,真正的缺点来自于AsyncTask的全局线程池只有5个工作线程,也就是说,一个APP如果运用AsyncTask技术来执行线程,那么同一时间最多只能有5个线程同时运行,其他线程将被阻塞(注:不运用AsyncTask执行的线程,也就是自己new出来的线程不受此限制),所以AsyncTask不要用于多线程取网络数据,因为很可能这样会产生阻塞,从而降低效率。

AsyncTask可能存在新开大量线程消耗系统资源和导致应用FC  Force Close 的风险,因此,我们需要根据自己的需求自定义不同的线程池,

时间: 2024-12-26 11:09:40

AsyncTask 和 Thread 区别的相关文章

Service与Thread区别

servie是系统的组件,它由系统进程托管(servicemanager):它们之间的通信类似于client和server,是一种轻量级的ipc通信,这种通信的载体是binder,它是在linux层交换信息的一种ipc.而thread是由本应用程序托管. 1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位.可以用 Thread 来执行一些异步的操作. 2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service

Android Service VS AsyncTask VS Thread

这三种方式的设计目的是不同的. Service: 适用于在后台长期持续运行的动作,如:播放音乐,查看网络数据.注意,在开发文档中,service本身是在UI线程中,所以所需的操作应该创建一个新的线程来完成工作. AsyncTask:主要用于防止阻塞UI线程的一次性/短暂动作.例如:点击button后获取网络数据,这里AsyncTask比较合适.因为受到数据后动作完成结束.而用service也可以完成工作,但是随后要关闭service,时低效的. Thread:就是通常意义的线程,注意在线程中不能

<转> service和Thread区别 加深印象。

原文链接 http://blog.csdn.net/imstephen/article/details/20299941 我们知道,一般情况下,一个应用程序对应一个进程,当然也有例外,比如在一个应用程序中打开浏览器时,这时就产生了另一个进程,也就是浏览器的进程.这时,当我们关闭了该应用之后,会发现该应用的进程并没有被销毁.实际上,由于这些应用是用于手机上的,用户可能会频繁使用这些应用,谷歌工程师为了提高我们使用这些应用的效率,当我们关闭一个应用时,只是将界面关闭了,并没有将其进程彻底杀死. 这样

Android开发中立即停止AsyncTask和Thread的一些办法

程序开发中经常会有立即停止线程运行的需要,而通过api是没有办法实现这个目的的,因此对于这个情况,我们需要采取一些“特殊”的方式来实现: 1,判断标志位的办法: 我们要知道在java的线程中,没有办法停止一个正在运行中的线程.在Android的AsyncTask中也是一样的.如果必须要停止一个线程,我们可以采用这个线程中设置一个标志位,然后在线程run方法或AsyncTask的doInBackground方法中的关键步骤判断这个标志位以决定是否继续执行.然后在需要终止此线程的地方改变这个标志位以

关于停止AsyncTask和Thread的问题

在java的线程中,没有办法停止一个正在运行中的线程.在Android的AsyncTask中也是一样的.如果必须要停止一个线程,可以采用这个线程中设置一个标志位,然后在线程run方法或AsyncTask的doInBackground方法中的关键步骤判断这个标志位以决定是否继续执行.然后在需要终止此线程的地方改变这个标志位以达到停止线程的目的. 从外部调用AsyncTask的cancel方法并不能停止一个已经启动的AsyncTask.这个cancel方法的作用与线程的interrupt方法相似,调

Android Asynctask与Handler的比较,优缺点区别,Asynctask源码

1  AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程. 使用的优点: l  简单,快捷 l  过程可控 使用的缺点: l  在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来. 2 Handler异步实现的原理和适用的优缺点 在Handler 异步实现时,涉及到 Handler, Loo

AsyncTask和Handler两种异步方式的实现和区别比较

1  AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程. 使用的优点: l  简单,快捷 l  过程可控 使用的缺点: l  在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来. 2 Handler异步实现的原理和适用的优缺点 在Handler 异步实现时,涉及到 Handler, Loo

AsyncTask的版本差异及其与Thread的使用场景

/** * AsyncTask相关总结 * * 1 异步任务AsyncTask在不同Android版本的差异. * 该差异主要是Android2.3和Android3.0及其之后的差异 * * 差异内容: * 在Android2.3中AsyncTask的调用可以并发执行. * 因为它在一个线程池中被调用.该线程池有5个核心线程,且最大线程数为128个. * 比如:同时启动10个任务,有5个任务能够立刻执行,另外5个任务则需等待;当有一个任务执行完毕后,第6个任务才会启动,以此类推. * 因为线程

Service与Thread的区别

不知道大家有没有和我一样的疑惑,在学习Android Service的时候,发现它和Thread很像.虽然,教程中一再强调,Service不是Thread,但是用了好久也没有发现他们的区别,在很多地方,都错误的使用Thread来代替Service去工作.但时间长了,发现Service和Thread区别很大,跟确切的说,他们不是一个东西!    1.Service 是android的一种机制Service 是运行在主进程的 main 线程上的.而Thread顾名思义会开辟一个线程去执行它是分配CP