IntentService介绍

IntentService是一个含有自身消息循环的Service,首先其是一个service,所以service的特性他都有,同时其还有一些自身的属性,其内部封装了一个消息队列和一个HandlerThread,在其具体的抽象方法:onHandleIntent方法是运行在其消息队列线程中。


在android源码中ServiceHandler类中,handleMessage方法内部执行了两个逻辑一个是调用了其onHandlerIntent抽象方法,通过分析其onCreate方法handler对象的创建,我们知道handleMessage方法是在HandlerThread线程中执行的,所以onHandlerIntent是在子线程中执行的,然后调用stopSelf方法。stopSelf()方法传递了msg.arg1参数,从onStart方法中知道是传递了startId。由于service可以启动N次,可以传递N次消息,当IntentService的消息队列中含有消息是调用stopSelf(startId)并不会立即stop自已,只有当消息队列中最后一个消息被执行完成时才会真正的stop自身。


  • IntentService是一个Service,也是一个抽象类;
  • 继承IntentService需要实现其onHandlerIntent抽象方法;
  • onHandlerIntent在子线程中执行;
  • IntentService内部保存着一个HandlerThread,Looper与Handler等成员变量,维护自身的消息队列;
  • 每次IntentService后台任务执行完成之后都会尝试关闭自身,但是当且仅当IntentService消息队列中最后一个消息被执行完成之后才会真正的stop自身;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值