`
bcyy
  • 浏览: 1826820 次
文章分类
社区版块
存档分类
最新评论

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--guide.rar_android开发_Visual_C++_

    Android城市导游系统的设计与实现 本文中将Web 开发中的三层架构移植改进为数据服务器、应用服务器和手机客户端三层的系统架构,提出了基于web services 的一种软件开发框架,并依据这种框架开发了Android 城市导游...

    Barcode-Reader:使用Google视觉库的Android条码读取器

    implementation ' com.google.android.gms:play-services-vision:11.0.2 ' // barcode reader implementation ' info.androidhive:barcode-reader:1.1.5 ' } 将条形码阅读器片段添加到您的活动中 < fragment ...

    android笔记安卓基础知识 四大组件、六大布局、五大存储

    四大组件、六大布局、五大存储,HandlerThread ,Services

    ActivityLogger:记录用户活动的 Android 应用程序 - 步行、骑自行车、乘车

    记录用户活动的 Android 应用程序 - 步行、骑自行车、乘车。 此应用程序用于演示如何有效地使用活动识别客户端 api。 以此实现为基础,可以构建许多对用户活动数据起作用的有用应用程序,例如 Moves、Rove。 当用户...

    Android应用程序的原理及术语

    Android应用程序的原理及术语个Android的开发人员必须要了解,且深刻理解的东西。本篇的主题如下: • 1、应用程序基础 • 2、应用程序组件 • 2.1、活动(Activities) • 2.2、服务(Services) • 2.3、广播...

    Basics-of-Android:这些是android开发人员必须具备的基础知识

    此存储库适用于正在学习Android开发并需要一些基本示例的用户。

    Android手机的google商店和google基础服务安装包

    Google Play services_23.44.14.apk Google Play Store_38.4.22.apk

    Google的Android开发人员:成为Android开发人员

    关于纳米对于追求Android专业化的中级Java开发人员,该程序讲授了所有Android开发基础的工具,原理和模式。 您在此Nanodegree程序中学习的技能将帮助您掌握现有平台,并为Android未来的激动人心的机遇做好准备。指数...

    Reactive-PlayServices:使用 RxJava 封装位置检索的 Android 库,返回 observables

    ###注意:这几乎仍然是自述文件驱动的开发,所以这个自述文件将作为库实现的基础。 将指定任何尚未实现的功能。 ##Motivation Play 服务是 Android 的绝佳补充,但它们的 API 很丑陋。 我们正在尝试以更好的格式...

    Android 简介

    关于Android开发使用的一些资料,比较基础,适合初学者

    springboot学习思维笔记.xmind

    Spring for Android Spring Web Flow Spring Web Services Spring LDAP Spring Session Spring项目快速搭建 Maven简介 Maven安装 Maven的pom.xml dependencies ...

    Linux综合测试(基础)

    Linux的一些入门基本操作的课程试题,

    adb1.0.26包含fastboot.exe

    即在 adb shell pm list packages 的基础上可以加一些参数进行过滤查看不同的列表,支持的过滤参数如下: 参数 显示列表 无 所有应用 -f 显示应用关联的 apk 文件 -d 只显示 disabled 的应用 -e 只显示 enabled 的...

    NCTUe4:用于浏览NCTU e3系统的Android应用

    此应用程序使用Firebase进行分析和崩溃报告,如果您想获取自己的报告,则可能需要更改app / google-services.json。 贡献 如果发现错误,请检查是否是已知问题,如果不是,请提交您自己的错误。 如果您是开发人员,...

    Android GPS详解及示例代码

    LBS(Location Based Services)直译的话就是基于地理位置的服务,这里面至少有两层意思,第一要能轻易的获取当前的地理位置,譬如经纬度海拔等,另一个就是在当前位置的基础上提供增值服务,譬如找附近的加油站、...

    Android城市导游系统的设计与实现

    提出了基于web services 的一种软件开发框架,并依据这种框架开发了Android 城市导游系统,可以实现对城市主要景点、住宿、饮食、购物等基础信息的在线查询。  1 引言  手机是人们可以随身携带的便利的通讯工具...

    嵌入式系统/ARM技术中的Android城市导游系统的设计与实现

    提出了基于web services 的一种软件开发框架,并依据这种框架开发了Android 城市导游系统,可以实现对城市主要景点、住宿、饮食、购物等基础信息的在线查询。  1 引言  手机是人们可以随身携带的便利的通讯工具...

    基于docent的基础:基于docent MRA的基础应用

    配置src / services / constants.js: export const DocentStorageAccount =“示例存储帐户” export const SAS =“示例连接字符串” 导出const BackUrl =“ ” 配置config.xml 修改config.xml:小部件id =“ ...

    Divide-react-native:React-Native应用

    Microsoft的Cognitive Services会分析输入图像,以补充所需的数据。该交易旨在无缝地划分交易涉及方之间的付款。 使用适用于iOS和Android的并结合ES6进行构建。 NativeBase在React Native的基础上构建一个层,该层...

    DoIP_Demo.zip

    oIP技术,在UDS诊断服务基础上,通过TCP/IP及以太网来进行远程车辆诊断,协议定义在ISO 13400,文档中详细描述了外部测试及刷新设备如何与整车内部ECU通过以太网及TCP/IP协议进行通讯。 文档目前分三份: — Part ...

Global site tag (gtag.js) - Google Analytics