time 
设为首页】【收藏本站
当前位置: 主页 > 电脑网络 > 操作系统 > 嵌入式 > Android > Android应用开发入门(四十六)Service组件介绍及使用

Android应用开发入门(四十六)Service组件介绍及使用

时间:2013-11-14 14:36 点击:1640次 字体:[ ]




前言

  本文聊一下Android下的Service组件,对于Service组件,有点类似于Windows下的服务。Service是Android四大组件中与Activity最相似的组件,它们的区别在于:Service一直在后台运行,它没有用户界面。一旦Service被启动起来之后,它就与Activity一样,也具有自己的生命周期。

  在开发过程中,对于Activity与Service的选择标准是:如果某个程序组件需要在运行时向用户呈现某种界面,或者该程序需要与用户交互,就需要使用Activity,否则就应该考虑使用Service。

  本文主要内容:

  1. Service概述
  2. Service清单文件配置
  3. Service开发步骤
  4. startService
  5. bindService
  6. Service的适用场景

 

Service概述

  与开发一个Activity类似,它需要继承Service这个抽象类,并在实现类中,需要重写一些回调方法,用于处理Service的生命周期各部分的操作。而Service也是继承自Context,因此它也可以调用Context里定义的如getResource()、getContentResolver()等方法。

  Service中定义的生命周期方法,对Service服务的开发大部分工作就围绕以下几个方法进行操作:

  • void onCreate():当该Service第一次被创建后将立即回调该方法。
  • void onStartCommand(Intent intent,int flags,int startId):每次通过startService()方法启动Service时都会被回调。
  • void onDestroy():当Service被关闭前会被回调。
  • abstract IBinder onBind(Intent intent):该方法是Service子类必须实现的方法,如果不需要通过绑定的方式启动服务,可以返回Null。
  • boolean onUnbind(Intent intent):当Service上绑定的所有客户端都断开连接将回调该方法。

   通过服务的启动方式与适用范围,可将服务分为两类服务:

  • start:启动服务,当一个Android组件(如一个Activity)调用startService()的时候,启动一个服务。服务一旦启动,就可以一直在后台运行下去,即使这个启动它的组件被摧毁。这样的服务模式,通常用于执行一个操作而不需要返回结果给调用者。
  • Bound:绑定服务,当一个Android组件(如一个Activity)调用bindService()。一个绑定服务提供了一个客户端到服务端的接口,允许组件与服务之间进行交互,这样可以实现跨进程的通信。绑定服务的生命周期默认是跟随它的绑定组件的,但是一个绑定服务可以绑定多个Android组件,如果这些Android组件都被销毁,那么这个绑定服务也将被销毁。

  虽然上面提到了服务有两种类别,但是一个服务类所要继承的类是一样的,都是Service类。也就是说,一个服务,可以包含上面两种运行方式的服务,只是与它重载的方法有关,如果重写了onStartCommand()即支持启动服务,如果重写onBiind()即支持绑定服务,所以如果同时重载实现这两个方法即可实现两种服务。

  而对于两种启动方式的服务,生命周期中被回调的方法也不一样,下图明确说明了Service两种情况下的生命周期:

 Android应用开发入门(四十六)Service组件介绍及使用_www.fengfly.com



本文地址 : http://www.fengfly.com/plus/view-214081-1.html
标签: Android Service
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: