1.asynctask的使用场景就是需要需要进行一些耗时的操作,耗时操作完成后更新主线程,或者在操作过程中对主线程的UI 进行更新。
2.注意事项:asynctask中维护着一个长度为128的线程池,同时可以执行5个工作线程,还有一个缓冲队列,当线程池中已有128个线程,缓冲队列已满时,如果此时向线程池提交任务,将会抛出ReJectedExcutionException。解决方法就是:由一个控制线程来处理asynctask的调用判断线程是否满了,如果满了则线程睡眠,否则请求asynctask继续处理。
3.如何关闭asynctask:在activity中调用asynctask对象的cancel()方法,在asynctask的后台任务中。随时使用iscanceled()来判断是否已经cancel任务,如果已经cancel则退出任务。