`
huaxin803
  • 浏览: 113348 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android Services---基础

 
阅读更多
要创建一个服务,你必须创建一个Service类(或一个既存的Service子类)的子类。在你的实现中,你需要重写一些处理服务生命周期关键特征的回调方法,并且给组件提供一种合适的绑定服务的机制。需要重写的重要的回调方法如下:

onStartCommand()

当一个组件通过调用startService()方法请求启动一个服务时,系统会调用这个服务的onStartCommand()方法。一旦这个方法执行了,那么这个服务就被启动,并且在后台无限期的运行。如果你实现了这个方法,当服务的工作结束时,你有责任通过调用stopSelf()方法或stopService()方法来终止服务。(如果你只想让服务提供绑定的能力,你不需要实现这个方法。)

onBind()

当一个组件想通过调用bindService()方法跟这个服务(如执行RPC)绑定时,系统会调用这个方法。在这个方法的实现中,你必须通过返回一个IBinder对象给客户提供一个用户跟服务进行交互的接口。你必须实现这个方法,但是如果你不允许绑定,那么这个方法应该返回null。

onCreate()

当服务被第一次创建时,系统会调用这个方法来执行一次安装过程(它在onStartCommand()或onBind()方法之前调用)。如果服务正在运行,这个方法就不会被调用。

onDestroy()

当服务不再使用或正在销毁时,系统会调用这个方法。你的服务应该使用这个方法来实现一些清理资源的工作,如清理线程、被注册的监听器、接受器等。这是服务能够接受的最后的调用。

如果组件通过调用startService()方法启动服务,那么这个服务就会一直运行到它自己用stopSelf()方法终止服务,或另一个组件通过调用stopService()方法来终止它。

如果一个组件调用bindService()方法来创建这个服务(并且不调用onStartCommand()方法),那么这个服务只跟绑定的组件运行同样长的时间。一旦这个从所有的客户端解绑,系统就会销毁它。

Android系统只有在内存不足和必须给有用户焦点的Activity回收系统资源时,才会强制终止一个服务。如果服务是被一个有用户焦点的Activity绑定的,那么它不可能被杀死,并且如果这个服务被声明运行在前台(稍后讨论),那么它也几乎不能被杀死。否则如果这个服务被启动并且长时间运行,那么随着时间的推移系统会降低它在后台任务列表中位置,并且这个服务将很容易被杀死---如果你的服务被启动了,那么你必须把它设计成能够通过系统能够妥善的重启。如果系统杀死了你的服务,那么一旦资源变为有效它就会重启(虽然这也依赖从onStartCommand()方法返回的值,稍后讨论)。

注:本人转载系个人觉得翻译的很好,值得收藏,且自己回头看着方便。

如有兴趣请访问作者官方博客http://blog.csdn.net/FireOfStar

分享到:
评论

相关推荐

    android-sdk-windows.zip

    总的来说,"android-sdk-windows.zip"是Windows平台上开发Android应用的基础,它提供了完整的开发环境,让开发者能够创建、调试和优化各种Android应用程序。对于想要进入Android开发领域的程序员来说,理解和熟练...

    android-sdk_r24.4.1-linux+jdk-8u144-linux-x64.rar

    8. **Extras**:包括Google Play Services、Android Support Library等,这些库提供了额外的功能和组件,让开发者可以轻松地集成到他们的应用中。 为了使用这个SDK,你需要设置环境变量,例如`ANDROID_HOME`指向SDK...

    android-sdk24.4.1-macosx.zip

    总的来说,"android-sdk24.4.1-macosx.zip"是Mac用户进行Android应用开发的基础,它提供了一个完整的开发环境,让开发者能够高效地编写、测试和发布应用程序。通过不断学习和熟练掌握Android SDK的使用,开发者可以...

    Android基础-08

    【Android基础-08】这一主题主要聚焦于Android操作系统中的两个关键组件:广播接收器(Broadcast Receivers)和服务(Services)。在Android开发中,理解并掌握这两个概念是至关重要的,因为它们允许应用程序在后台...

    android-android-ui-design-patterns.rar_Android UI Design_Android

    1. **Material Design**:Google推出的Material Design是Android设计的基础,它强调了层次感、动态反馈和色彩的重要性。设计师通常会遵循Material Design指南来创建界面,包括使用阴影来表现深度,以及使用清晰、...

    android-sdk\platforms\android-19

    这个版本的Android引入了许多新特性和改进,对开发者来说是理解Android系统运作和构建应用的基础。 一、Android 4.4 KitKat (API Level 19) 简介 Android 4.4 KitKat是Google在2013年推出的Android操作系统版本,它...

    Android SDK-17 source 源码包

    - Android有许多系统服务,如Location Services(定位服务)、Alarm Manager(闹钟管理器)等,都在源码中可以找到其实现。 通过分析和学习Android SDK-17源码,开发者可以深入了解Android的运行机制,提高应用的...

    android 核心分析之------Android 启动过程详解

    `init.rc`文件是Android自定义的初始化脚本语言的一部分,用于定义四种类型的声明:`Actions`、`Commands`、`Services`和`Options`。通过解析这些脚本,`init`进程能够启动所需的服务。例如,`servicemanager`负责...

    Android-SDK-Windows-版本.rar

    在SDK Manager中,你还可以下载Android Support Library、Google Play Services和各种版本的Android Emulator系统映像,这些都是开发中常用的库和工具。 完成上述步骤后,你就可以使用Android Studio,这是一个集成...

    android-sources-16_r01.zip

    Android 的权限管理系统位于 "frameworks/base/services/java/com/android/server/am" 中,这部分源码可以帮助我们理解如何控制应用程序的权限,以及 Android 的安全模型。 8. **多媒体支持** "media" 目录包含了...

    Android-AndroidLibs.zip

    本文将深入探讨Android系统的核心特性、开发环境以及AndroidLibs-master这一关键组成部分,帮助读者更全面地理解Android开发的基础知识。 Android是由谷歌公司在2008年推出的一款开源操作系统,主要以Java、C和C++...

    Android-Networking-1

    Marty Hall是一位知名的作者和技术开发者,他开发并教授了一系列Java EE相关的课程,包括Java、JSF2、PrimeFaces、Servlets、JSP、Ajax、jQuery、Spring、Hibernate、RESTful Web Services、Hadoop以及Android等技术...

    AndroidDriver-master_layers2x3_简单android源码_androidapp源码_android_

    这个项目的名称“AndroidDriver-master”可能暗示了它是一个基础级别的Android应用示例,旨在帮助开发者了解Android应用的基本构建块和驱动机制。 在Android应用开发中,通常包含以下几个关键组成部分: 1. **...

    android-sdk-windows v2.3离线完整版

    1. **SDK Tools**: 这是SDK的基础部分,包括adb(Android Debug Bridge)用于设备通信,ddms(Dalvik Debug Monitor Service)用于调试,以及avd manager(Android Virtual Device Manager)用于创建和管理虚拟设备...

    Android-1_0-CC

    以下是从该文件中提炼出的关键知识点,涵盖了Android应用开发的基础概念、架构以及实践技巧。 ### 一、Android应用的四大组件 - **Activities**:活动是应用程序中的一个屏幕,用户可以与其交互。它是应用程序中...

    Android应用-人脸识别功能使用源码.zip

    在Android中,常用的人脸识别库有OpenCV、Face++、Google Play Services的Vision API等。 2. **OpenCV库** OpenCV是一个开源的计算机视觉库,支持多种平台,包括Android。在Android应用中,可以利用OpenCV的Java...

    ros-android-hello

    学习这个项目,你将掌握Android平台上的ROS开发基础,能够创建自己的ROS节点,实现Android设备与ROS系统的通信。这将为开发更复杂的机器人应用,如移动机器人控制、视觉处理等奠定基础。同时,熟悉配置文件的修改将...

    Android客户端-调用iServer发布的REST地图服务

    6. **叠加图层**:除了基础地图服务,还可以加载其他REST服务,如图层、标注、热点区域等,通过叠加实现更丰富的地图展示。 7. **空间查询与分析**:SuperMap iClient提供了丰富的空间查询和分析功能,如缓冲区分析...

Global site tag (gtag.js) - Google Analytics