免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1182 | 回复: 0
打印 上一主题 下一主题

Android Service Test——service [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-18 11:18 |只看该作者 |倒序浏览
       Android已经提供了一个用于测试service的框架,该测试类即为ServiceTestCase。在对service进行设计的时候就需要考虑到自己的测试用例要测试到service生命周期中的各种状态,当然对service的测试离不开ServiceTestCase中的各种方法。

      首先了解一下Service的继承关系,如下图所示,当然还有许多类继承了Service类,如AbstractInputMethodService, AccessibilityService, IntentService, RecognitionService, WallpaperService等。



       但是Service到底是用来做什么的?简单来讲Service 用于两种情况:第一种就是在后台完成一系列可能非常耗时的操作,但并不和用户进行交互。比如说我们用手机播放音乐或者传输数据,但同时我们还想干点别的事情,比如看看电子书等,这时就可以将播放音乐或者传输数据等以Service的方式在后台完成,但是并不影响我们看电子书。第二种就是为其他的程序提供一些功能,这种情况下可能会和这些程序保持一种长时间的交互。

       在Android中使用Service必须要注意以下几点:
       1.每个Service都必须在AndroidManifest.xml中进行声明,一般格式为<service android:enabled="true" android:name=".ServiceName"/>
       2.Service并不是运行在一个独立的进程中,而是运行在程序的主进程中,因此如果Service要处理消耗CPU的工作就应该自己创建一个线程来完成,否则可能会导致程序没有响应。

      下面来看一下Service的生命周期。要启动Service有两种方法,分别是Contex.startService(),这种情况下可以调用Context.stopService()来结束服务;另外一种方法是Context.bindService(),这种情况下要调用Context.unbindService()来结束服务,并且多个客户程序都可以bind同一个服务。这两种方法并不是独立的,例如我们可以使用startService()来启动一个在后台播放音乐的服务,这可以通过一个Intent对象来实现,但是当我们想控制音乐的播放或者获取当前歌曲的信息时就需要使用一个Activity通过bindService()方法来同Service建立联系,当一个Service有程序bind的时候即使调用stopService()方法也不会停止服务。具体的生命周期如下图所示:



    
     对于service可以通过在生命周期的方法来监视服务的状态,通过startService()方面启动的服务主要有3个pulbic方法可以实现,其中onStart()方法是其所独有的:
             void onCreate()
             void onStart(Intent intent)
             void onDestroy()
     通过bindService()方法启动的服务则可以通过3个额外的方法来监视其状态,分别是:
              IBinder onBind(Intent intent)
              boolean onUnbind(Intent intent)
              void onRebind(Intent intent)
     要终止服务可以通过stopService()或者stopSelf()方法,需要注意的是不管服务启动了多少次,一旦调用了这两个方法都会终止服务的运行。
  



您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP