0
点赞
收藏
分享

微信扫一扫

面试题:Android中异步任务处理的几种方式,以及它们的优缺点。

第一种:使用handler

缺点明显:
  使用handler进行异步处理时,容易产生内存泄漏问题。固然可以通过将handler设置为静态内部类,解决这个问题,但是将handler设置为静态内部类后就无法引用内部成员变量。
内存泄漏原因:
  Activity要销毁时,消息队列里消息没处理完,Message Queue默认引用handler,handler默认引用activity。

第二种:使用IntentService(异步任务处理服务)

  优点:可以在后台执行,不受Activity生命周期影响。(只能通过startActivity()启动IntentService,可以像普通service一样绑定activity,通过Binder通信)
  缺点:如果说消息队列里没消息了,那么service会暂停,内存不够的情况下有可能被系统杀死。

第三种:使用handlerThread(一个继承了Thread的handler处理类)

Thread + 消息机制
  优点:使用非常灵活(自己手写的代码一般也是最多的)一般只在Activity里使用,主线程,工作线程均可实现自己的handler机制。
  缺点:Activity挂了,也就跟着挂了,需要后台运行那就用IntentService。

第四种:使用AsyncTask

  优点:被封装过,需要显示进度条的情况下非常方便,可以串行,也可以并行。
  缺点:没那么灵活,只能在主线程里创建。

举报

相关推荐

0 条评论