阅读 85

面试题: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

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

作者:千夜零一

原文链接:https://www.jianshu.com/p/84c65e3b244e

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐