AsyncTask的使用注意事项

AsyncTask的使用注意事项
前面的文章曾建议使用AsyncTask而不是使用Thread,可是AsyncTask彷佛又有它的限制,这就要根据具体的需求状况而选择合适的工具,No Silver Bullet。下面是一些建议:
•改善你的设计,少用异步处理
线程的开销是很是大的,同时异步处理也容易出错,难调试,难维护,因此改善你的设计,尽量的少用异步。对于通常性的数据库查询,少许的I/O操做是没有必要启动线程的。
•与主线程有交互时用AsyncTask,不然就用Thread
AsyncTask被设计出来的目的就是为了知足Android的特殊需求:非主线程不能操做(UI)组件,因此AsyncTask扩展Thread加强了与主线程的交互的能力。若是你的应用没有与主线程交互,那么就直接使用Thread就行了。
•当有须要大量线程执行任务时,必定要建立线程池
线程的开销是很是大的,特别是建立一个新线程,不然就没必要设计线程池之类的工具了。当须要大量线程执行任务时,必定要建立线程池,不管是使用AsyncTask仍是Thread,由于使用AsyncTask它内部的线程池有数量限制,可能没法知足需求;使用Thread更是要线程池来管理,避免虚拟机建立大量的线程。好比从网络上批量下载图片,你不想一个一个的下,或者5个5个的下载,那么就建立一个CorePoolSize为10或者20的线程池,每次10个或者20个这样的下载,即知足了速度,又不至于耗费无用的性能开销去无限制的建立线程。
•对于想要当即开始执行的异步任务,要么直接使用Thread,要么单首创建线程池提供给AsyncTask
默认的AsyncTask不必定会当即执行你的任务,除非你提供给他一个单独的线程池。若是不与主线程交互,直接建立一个Thread就能够了,虽然建立线程开销比较大,但若是这不是批量操做就没有问题。
•Android的开发没有想像中那样简单,要多花心思和时间在代码上和测试上面,以确信程序是优质的
数据库

相关文章
相关标签/搜索