首页 > 其他 > 详细

服务的基本用法

时间:2016-01-09 16:35:14      阅读:273      评论:0      收藏:0      [点我收藏+]

定义一个服务

     新增一个MyService的类,并继承自Service,如下:

技术分享

      目前MyService中可以算式空空如也,但是有一个onBind()方法,这个方法是Service中唯一的一个抽象方法,所以必须在子类中实现。既然定义一个服务,自然会去处理一些事情,那么事情的处理应该写在哪里呢?可以重写Service中的一些方法,onCreate(),onStartCommand(),onDestroy()这三个方法,它们是服务中最常用的三个方法。onCreate()是服务创建的时候调用,onStartCommand()方法会在每次服务启动的时候调用,onDestroy()方法会在服务销毁的时候调用。如果服务一启动就立刻执行某个动作,就可以将逻辑写在onStartCommand()方法中,而当服务销毁时,可以在onDestroy()方法中回收那些不再使用的资源。每一个服务都需要在AndroidMainfest.xml中注册才能生效,如下:

技术分享

这样的 话,一个服务就定义好了。

启动和停止服务

      启动和停止服务主要借助Intent来实现,在项目中实践,去启动和停止MyService这个服务,首先,修改activity_main.xml中的代码:

   技术分享

修改MainActivity中的代码,如下:

技术分享

服务的onCreate()方法是在服务第一次创建的时候调用的,而onStartCommand()方法则是在每次启动服务的时候都会调用。

活动和服务通信

      可以在活动中控制服务,这就需要借助服务中的onBind()方法。比如,希望在MyService里提供一个下载的功能,然后活动中可以决定何时开始下载,以及随时查看下载进度。实现这个功能的思路是创建一个专门的Binder对象来对下载功能进行管理,MyService中的代码如下所示:

技术分享

在DownloadBinder中提供了两个提供下载以及查看下载进度的方法,当让都是模拟方法,并没有实现真正的功能,然后修改activity_main.xml中的代码:

  技术分享

当一个活动和一个服务绑定之后,就可以调用服务里的Binder提供的方法了,修改MainActivity中的代码:

技术分享

技术分享

      首先创建了一个ServiceConnection的匿名类,在里面重写了onServiceDisconnected()和onServiceConnected()方法,这两个方法分别在活动与服务成功绑定以及解除绑定的时候调用。在onServiceConnected()方法中又通过向下转型得到DownloadBinder的实例,有了这个实例,活动和服务之间的关系就变得十分紧密了。

bindService(bindIntent,connection,BIND_AUTO_CREATE);中的第三个参数表示活动和服务进行绑定之后自动创建服务。

 

      

   

技术分享

     

服务的基本用法

原文:http://www.cnblogs.com/hujingwei/p/5116542.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!