上次说了下 Activity 的一些常识 ,这次 咱一起来看看 activity的 好哥们 service ,同样是Android 四大组件之一;
首先 说下 什么是service ?
简单的来说 service 就是 一种长期运行在后台,长生命周期 并且没有用户界面,不能够与用户进行交互,不能自己启动的 一种 服务 常用于执行后台 比较耗时的 操作 比如说 后台播放音乐,视频 等
那么 使用 它 需要 在项目清单中去注册 。 不知道大家注意了没 上次的Activity 也是 需要在项目清单中去注册,这次跟Activity 相同 , 其实 他们都是四大组件吗 是不是这样 ?后续 说完 四大组件 就知道了 值得思索哦
进入正题 一: Service 的 两种状态
1:启动状态 :这种状态 主要用于 执行后台计算
2:绑定状态 :这种状态 可以做 一些 与Activity的交互 也可 通过 Acitvity 与用户间接交互。
二: Service 的 两种启动方式
1:startService() 本地服务:它可以启动并运行,直至有人停止了它或它自己停止。在这种方式下,它以调用Context.startService()启动,而以调用Context.stopService()结束。它可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。不论调用了多少次startService()方法,你只需要调用一次stopService()来停止服务。用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好。
它的生命周期 :
启动 startService() 会走 OnCreate() OnStart()
如果服务以经开启, 再次调用 不会重新开启 而是 调用了OnStart()
关闭 stopService() 需要调用 OnDestroy() 进行关闭 如果不关闭会一直在后台运行
2: bindService(); 远程服务:它可以通过自己定义并暴露出来的接口进行程序操作。客户端建立一个到服务对象的连接,并通过那个连接来调用服务。连接以调用Context.bindService()方法建立,以调用 Context.unbindService()关闭。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。可被其他应用程序复用,比如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可。
它的生命周期 :
启动 onCreate() onBind() 只能绑定一次
关闭 会直接调用 onUnbind() onDestroy() 调用者与服务绑定在了一起,调用者一旦退出,服务也就终止