菜鸟学习之Android Service组件

一、什么是Android Service

       本地服务(Local Service ):用于应用程序内部的服务。

         远程服务(RemoteService):  用于android系统内部的应用程序之间。可以定义接口并把接口暴露出来,以便其他应用进行操作。

二、Android Service的启用方法和停止方法

       1. 通常本地服务通过Context.startService()来启用,调用Context.stopService()来停用服务;而在Service内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。

         2.通过Context.bindService()来建立连接并启用服务,调用 Context.unbindService()关闭连接。

三、Android Service的生命周期

         AndroidService 的生命周期与Acitivity相似,但也有不同的地方:

       onStart()方法:Context.startService(Intent)启用一个服务,如果服务还没有运行,Android将启用它并在onCreate()方法后调用其onStart()方法;如果服务已经在运行了,则onStart()方法在此被Intent调用;

         onBind()方法:如果一个客户端需要持久的连接到一个服务,那么他可以调用Context.bindService方法。如果这个服务没有运行方法将通过调用onCreate方法去创建这个服务但并不调用onStart方法来启动它。相反,onBind方法将被客户端的Intent调用,并且它返回一个IBind对象以便客户端稍后可以调用这个服务。同一服务被客户端同时启动和绑定是很正常的。

         onResume、onPause以及onStop:因为回调服务都是没有界面的,所以这些方法都是不需要的。

         onDestory()方法:与Activity一样,当一个服务被结束是onDestroy方法将会被调用。当没有客户端启动或绑定到一个服务时Android将终结这个服务。与很多Activity时的情况一样,当内存很低的时候Android也可能会终结一个服务。如果这种情况发生,Android也可能在内存够用的时候尝试启动被终止的服务,所以你的服务必须为重启持久保存信息,并且最好在onStart方法内来做。


四、Android Service生命周期的管理

         纯粹的绑定service:Android系统会自动销毁和所有客户端接触绑定的Service。

         实现onStartCommand()回调方法的Service:必须显式地停止service,因为service此时被看做是开启的。这种情况下,service会一直运行到它自己调用 stopSelf()或另一个组件调用stopService(),不论它是否和客户端绑定。



五、Android Service的测试

         1.ServiceTestCase继承于JunitTestCase类,简要继承图如下:

        

         2.. 测试环境的初始化,可以通过ServiceTestCase.startService()和ServiceTestCase.bindService()来完成测试环境的初始化工作

         3. 调用Context.startService()或者Context.bindService()后要确定onCreate()方法被正确地调用

         4.当调用Context.stopService(), Context.unbindService(), stopSelf()或者stopSelfResult()等方法时要确定onDestroy()方法被正确地调用。

         5.服务能够正确地处理Context.startService()的多次调用,只有第一次调用才会触发Service.onCreate()方法,但是每次都会调用Service.onStartCommand()方法。

         6.startService()不会嵌套调用,因此对Context.stopService()或者 Service.stopSelf() ( stopSelf(int)不再此列)的一次调用就应该能够终止服务。

         7.测试服务在实现上的逻辑正确性。

 

测试点

一、系统服务

         通过adb shellservice list 来查看系统服务:

        

二、定位服务

         1.设置-位置按钮打开:

                  a)地图能定位到手机位置

                   b)用adb shell dumpsys location来查看服务:

        

         2.设置-位置按钮关闭:

                   a)地图无法定位到手机位置

                   b)用adb shell dumpsys location来查看服务:

        

三、第三方app(QQ音乐后台播放服务)

         1. 播放音乐时切换至后台

              a)音乐正常播放;

              b)通过 adb shell activity services查看服务:

              服务处于活动状态

             

       2.点击消息栏关闭按钮

              a)音乐停止播放

              b)通过 adb shell activity services查看服务:

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值