service的使用

service的使用

这是一篇关于Android service的基本使用,我们都知道Android中存在着四大组件,可以说除了activity之外service是使用得最多的另一大组件,那么我们将从如下几个方面来学习使用service这一高频组件,首先、我们要知道的什么是service,我们为什么要用service?第二、我们怎么用service,有那几种方式来启动一个service?第三、搞清楚service的生命周期。第四、关于不同的启动方式组合起来我们可以做一些什么有意思的事情?

什么是service,我们为什么用service

service是为了弥补activity在前台当中不能处理耗时操作的一种工作在后台不可见的组件,它可以在后台默默的为我们处理很多比如网络请求,文件上传,下载等。那么有人就说我们为什么不在UI线程中开启一个子线程来处理这些耗时操作呢,那是因为线程是完全不可控的,线程的调度完全由CPU来决定,那么对于线程处理过程中我们可能要进行一些交互就变得不那么便捷。有人说那也可以使用AsyncTask来处理相关业务,当然在某些情况下这个方案是可行的,但是我们很多下载任务肯能周期很长,我们的AsyncTask的生命周期又是与activity相关的,这样就会使得我们的任务停滞,这时候我们就必不可少的使用到service。

service的启动方式

*1.startService(Intent intent) 方式启动,这一种启动方式优先级别较高,并且service与activity生命周期无关,在activity销毁的时候,没有运行完service依然在后台运行。
*2.bindService(intent connection int)这种方式优先级别教第一种级别较低,而且生命周期与activity紧密相连
启动选择,第一种与活动生命周期无关,在启动后活动自动运行,适用于交互级别比较低的业务,

service的生命周期

1.service生命起于onCreate,终止于onDestroy
2.如果是startService方法启动的service,那么接着会自动调用onStartCommand()方法,以后无论调用多少次startService,都不会再从新执行onCreate方法,而只会执行onStartCommand()方法;
3.bindService启动的service,service会执行onCreate,onBind()方法,并且我们会在onBind方法中返回一个自己定义的继承自Binder类的对象,利用这个对象控制service的运作。并且通过这这方式启动的service跟activity的生命建立了关联,在activity销毁时,service也会自动解绑,并且销毁。

service启动方式的组合

首先采用bindService启动,然后又调用了startService来开始这个活动,这个时候因为startService的优先级高于bindService,从而使得service的生命周期与activity不再相关联,也就是我们销毁该活动,service依然会运行。

采用startService启动的服务,然后再使用bindService来绑定服务,这个时候,service也不会与activity建立联系,销毁activity后service也依然会运行,利用这个特性可以实现一些音乐的播放,文件的下载,并且获取到下载进度。

单纯的使用BindService启动的service适合于制作视频播放,销毁service的时候就会自动destroyservice

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值