学生问题:
handler与AsyncTask的区别?
老师回答:
首先说说handler+thread,由于在android中ui线程是单线程,如果在ui线程中执行耗时操作,那么就会导致类似死机一样的体验.那么我们如果新开一个线程呢,让这个复杂耗时的任务到后台去执行,但是执行完毕了我们也无法和ui进行交互.所以这里就引入了handler+thread这个概念.我们通常在UI线程中创建一个handler,handler相当于一个处理器,它主要负责处理和绑定到该handler的线程中的message。每一个handler都必须关联一个looper,并且两者是一一对应的,looper负责从其内部的messageQueue中 拿出一个个的message给handler进行处理。因为我们这里handler是在UI线程中实现的,所以经过这么一个handler、message机制,我们就可以回到UI线程中了.
如果消息阻塞了呢?还有很多其他的原因都可能导致handler+thread会出现问题.从android1.5开始,系统将AsyncTask引入到android.os包中,用于在某些Thread+Handler不适用的情况.它最大的特点,个人经验来说,在于过程可控,自带多线程.