Android学习笔记四大组件之Service

来源:互联网 发布:java发短信验证码 编辑:程序博客网 时间:2024/05/31 06:22

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)方法即可停止Service2. 在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类,继承自Service2. 注册Service3. [Activity] 声明内部类InnerServiceConnection,实现ServiceConnection接口4. [Activity] 调用bindService()方法实现绑定,其中,方法的第1个参数是Intent对象,用于指定被激活的组件,第2个参数以上第3个步骤的内部类对象,且应该被声明为全局变量,第3个参数取值为常量BIND_AUTO_CREATE5. [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,或进程中存在绑定了前台进程的Service2. 可见进程:进程中存在局部可见(可见却不可控的)的Activity,或进程中存在绑定了可见进程的Service3. 服务进程:存在正在执行的Service的进程4. 后台进程:进程中所有的Activity都被置于后台5. 空进程:被销毁的进程


0 0
原创粉丝点击