您的位置:首页 > 移动开发 > Android开发

android四大组件之一Service

2016-03-16 16:55 435 查看
android四大组件之一Service:

service 是android的核心组件之一,不需要由用户去创建,有Android系统管理和维护。

所有的自定义Service都不许继承Service类,并且在Androidfest.xml中生命它

service是没有界面的适合在后台默默执行的生命周期长,虽然service是适合长期执行的,但是它还是运行在主程序中因此好事的功能应该写到分支线程中。

service的激活方式:

1)使用startServicer进行激活

使用startService(Intent)激活Service经历的生命周期为

1.onCreate()--->onStartCommand()---->onDestory()

可以反复的调用startService()激活同一个Service,但是service只能创建1次,后面会反复经历onStartCommand(),可以使用stopService()停止service,但是在service内部也可以使用stopSelf()停止service()

service的粘性

使用startService()激活的service会具有粘性,被意外终止的service会自动重启,会经历onCreate()--->onStartCommand()在startCommand()方法中的返回值,决定Service的粘性

1)Service.START_NOT_TICKY;//粘性

2)Service.START_STICKY;非粘性的

3)Service.STARTSTICKY_COMPATIBILITY;//兼容性粘性

4)service.START_REDELIVER_INTENT;粘性的 并且重启Service时会重新传值Intent

使用绑定的Service进行激活

绑定Service是通过bindService()激活Service的一种方式,绑定的Service是非粘性的

绑定的Service会对进程产生影响,若绑定Service是前台的,则Service也是前台的,若可见的进程绑定Service,则Service是可见的

绑定Service的生命周期为:onCreate()--->onBind()---->onDestory()

在service的onBind()方法中返回值不可以为null;否则将绑定不成功,在Activity中的ServiceConnection()方法不会被回调,也不能得到IBBinder

绑定的Service最后一定要解除绑定,最晚也要在Activity的onDestory()方法中解除绑定,调用的方法是unbindService()

Service的绑定流程

1)自定义service并继承service在AndroidMainfest.xml中声明service并根据具体情况是否添加隐式调用

2)自定义接口,约定其它组件(如Activity)调用Service方法的时候调用该方法

3)通常情况下,在Service中定义内部类几成Binder并实现自定义接口,重写自定义接口方法,吧其它组件需要调用的Service方法写到此方法中

4)定义IBBinder对象,并实例化内部类,在onBinder中返回该IBinder对象

5)在调用Service的组件中通过bindService(ServiceConnection flags) 激活service对象 在接口中定义该对象并强制转化为自定义接口类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android service