Android Service总结

参考文章

Android总结篇系列:Android Service
【Android】远程服务(Remote Service)的使用
Android四大组件:Service服务史上最全面解析
startService与bindService的区别

为什么要有Service

在现实世界的工作中,我们做一件事情的完整过程:领导指示做什么事、去执行、保存成果、报告完成,抽象之后:交互、执行、存储、通信四个部分组成,Android四大组件就是干这个的,当然,Activity除了可以完成交互任务,也可以做事情;数据共享不只有ContentPovider一种方式;组件之间通信可以有很多种实现如EventBus。但是涉及到跨进程(不同APP)的视图调用、数据共享、消息通信和业务执行,使用这四个组件就非常有必要了。Service是Android四大组件之一,它的主要任务是做事情(苦力)!所以Service是必须的:

Activity==交互:用于和用户交互;

Service==做事:属于Android中的计算型组件,不依赖于用户可视的UI界面,提供需要在后台长期运行的服务(如复杂计算、下载等等)。特点是长生命周期的、没有用户界面、在后台运行;

ContentPovider==共享:用于数据共享(组件之间、线程之间、进程之间);

BroadCast==通信:用于组件之间、进程之间的通知播报。

Service 分类

运行地点分:

本地服务(LocalService)
远程服务(RemoteService)

可见性分类:

前台Service
后台Service

可通信性分类:

可通信的Service
不可通信Service

这里写图片描述

需要注意的是
1、本地服务是在主线程中,如果有耗时的操作,Service应该开启新的线程去执行;本地服务在APK的主线程结束后肯定会被kill掉;如果我们不手动的结束掉自己的Service,它会一直在后台;

2、远程服务(Remote Service)是独立进程,用于系统服务或者干坏事的.

startService和bindService有很多不同的地方

(1)生命周期不同
请看下图他们的生命周期:

这里写图片描述

(2)结束方式不同
还是看上图!

startService,有两种方式结束,stopSelf(自杀)+stopService(他杀)。如果有人采用bindService这个服务,必须等到unbindService之后才能stopService。
binService,当所有关联方全部unbindService之后才会结束;即使你用stopService也不行。一个bindService对象结束掉会自动unbindService。

(3)应用场景不同

startService方式无法与Service进行通信,可以通过BroadCast方式解决,交互频繁性能不高;bindService是可以的,如果你需要和Service通信,那么请采用bindService方式,当然你的Service要支持通信才行。

IntentService

RemoteService

未完待续

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值