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也会自动解绑,并且销毁。