Android学习笔记四大组件之Service

Service是Android系统的核心组件之一,是由系统进行管理和维护的。

【定位】
Service是没有界面的;
Service适合在后台执行长时间的任务;
Service是单例的;
注意:Service是运行在主线程的,所以,如果需要让Service执行耗时操作,需要在Service中开启子线程来完成
【创建步骤】
1. 继承:自定义类继承自android.app.Service类
2. 注册:在AndroidManifest.xml的<application>节点下,添加<service>节点,并配置该节点的android:name属性完成注册
启动模式的Service
【启动Service】
调用startService(Intent)方法即可启动Service
【停止Service】
1. 调用stopService(Intent)方法即可停止Service
2. 在Service内部调用stopSelf()方法可停止Service
【Service的生命周期】
onCreate() -> 当创建时,该方法仅当第1次启动时被调用
onStartCommand() -> 当开始执行某个指令时,该方法在每次启动时都会被调用
onDestroy() -> 当销毁时,该方法在Service被停止后执行
【Service的粘性】
Service的粘性表现为:当Service被意外终止时,会自动重启。
Service是否粘性,是根据onStartCommand()方法的返回值决定的,取值为Service类的常量:
START_STICKY -> 粘性的
START_STICKY_COMPATIBILITY -> 兼容模式的粘性的
START_NOT_STICKY -> 非粘性的
START_REDELIVER_INTENT -> 粘性的,且重新传递Intent
绑定模式的Service
绑定模式的Service是实现其它组件,例如Activity,与Service实现绑定关系,当实现了绑定关系后,Activity可以和Service实现组件之间的通信。
【绑定流程】
1. 创建WorkService类,继承自Service
2. 注册Service
3. [Activity] 声明内部类InnerServiceConnection,实现ServiceConnection接口
4. [Activity] 调用bindService()方法实现绑定,其中,方法的第1个参数是Intent对象,用于指定被激活的组件,第2个参数以上第3个步骤的内部类对象,且应该被声明为全局变量,第3个参数取值为常量BIND_AUTO_CREATE
5. [IMusicPlayer] 声明新的接口文件IMusicPlayer,并在接口中声明那些由Service实现、由Activity调用的方法,例如void play()等等
6. [Service] 声明内部类InnerBinder,继承自Binder,实现IMusicPlayer接口
7. [Service] 在onBind()中,创建InnerBinder的对象,作为该方法的返回值
8. [Activity] 声明IMusicPlayer的全局变量player,该变量的值将在InnerServiceConnection的onServiceConnected()方法中,根据第2个参数强制类型转换得到。
9. [Activity] 在需要的时候,通过player执行各种已经在接口中声明的方法,而这些方法最终都会是Service在运行的
【绑定的Service的生命周期】
onCreate() -> 当创建时,第1次绑定时被调用
onBind() -> 当绑定时,第1次绑定时被调用
onDestroy() -> 当销毁时,解除绑定时被调用
【解除绑定】
可以通过unbindService(ServiceConnection)解除绑定。
注意:如果Activity绑定了Service,在没有解除绑定之前,直接退出Activity会导致错误(该错误不会显示在手机上)。
进程的优先级
在Android系统中,当内存资源不足时,系统会自动清理一部分已经打开的应用程序占用的内存空间,以保证有足够的内存来运行用户当前需要运行的程序。在自动清理的过程中,会根据各进程的优先级,优先清理优先级较低的进程。
进程的优先级从高到低分别是:
1. 前台进程:进程中存在可见并可控的Activity,或进程中存在绑定了前台进程的Service
2. 可见进程:进程中存在局部可见(可见却不可控的)的Activity,或进程中存在绑定了可见进程的Service
3. 服务进程:存在正在执行的Service的进程
4. 后台进程:进程中所有的Activity都被置于后台
5. 空进程:被销毁的进程


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值