android四大组件之一Service
2016-03-16 16:55
435 查看
android四大组件之一Service:
service 是android的核心组件之一,不需要由用户去创建,有Android系统管理和维护。
所有的自定义Service都不许继承Service类,并且在Androidfest.xml中生命它
service是没有界面的适合在后台默默执行的生命周期长,虽然service是适合长期执行的,但是它还是运行在主程序中因此好事的功能应该写到分支线程中。
使用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()
2)自定义接口,约定其它组件(如Activity)调用Service方法的时候调用该方法
3)通常情况下,在Service中定义内部类几成Binder并实现自定义接口,重写自定义接口方法,吧其它组件需要调用的Service方法写到此方法中
4)定义IBBinder对象,并实例化内部类,在onBinder中返回该IBinder对象
5)在调用Service的组件中通过bindService(ServiceConnection flags) 激活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对象 在接口中定义该对象并强制转化为自定义接口类型
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析