Android基础—使用IntentService

IntentService是Service的子类。我们经常遇到这样的情形:由于Service不是运行在专门的线程,所以在Service中需要处理耗的操作时,就要在Service中启动一条新的线程来处理它。但是这样有一个问题:有可能宿主进程被终止,而其中的子线程也会被终止,但是它还没有执行完成。

而IntentService可以弥补这些不足:IntentService使用队列来管理请求的Intent,每次当客户端通过Intent请求启动IntentService时,IntentService会将Intent加入队列中,然后开启一条Worker线程来处理Intent。对于异步的startService()请求,Intent会按次序一次处理队列中的请求Intent,该线程会保证同一时刻只处理一个Intent。

可以看到IntentService的主要特征是:

1,Intentservice采用单独的worker线程来处理所有的Intent请求;

2,IntentService启动的worker线程每次只传递一个intent给onHandlerIntent()的实现方法,因此不用处理多线程的问题;

3,在所有的请求处理完后,IntentService会自动停止,无需调用stopSelf()来终止Service;

4,IntentService为onBind()方法提供了默认的实现,它返回null;

5,IntentService为onStartCommand()方法提供了默认的实现,它将请求的Intent放入请求队列中。


这样我们所有的注意力就可以集中在onHandleIntent()方法上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值