Android实现异步的几种方法,面试题: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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值