安卓开发 service 简介

Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy

  我们有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。

  1 通过startService

  Service会经历 onCreate --> onStart

  stopService的时候直接onDestroy

  如果是 调用者 直接退出而没有调用stopService的话,Service会一直在后台运行。

  下次调用者再起来仍然可以stopService。

  2 通过bindService

  Service只会运行onCreate, 这个时候 调用者和Service绑定在一起

  调用者退出了,Srevice就会调用onUnbind-->onDestroyed

  所谓绑定在一起就共存亡了。

  注意:Service的onCreate的方法只会被调用一次,

  就是你无论多少次的startService又 bindService,Service只被创建一次。

  如果先是bind了,那么start的时候就直接运行Service的onStart方法,

  如果先是start,那么bind的时候就直接运行onBind方法。如果你先bind上了,就stop不掉了,

  只能先UnbindService, 再StopService,所以是先start还是先bind行为是有区别的。

  Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。

  服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。

  这两个方法都可以启动Service,但是它们的使用场合有所不同。使用startService()方法启用服务,调用者与服务之间没有关连,

  即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。

  如果打算采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,

  接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,

  但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。

  如果打算采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,

  接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,

  接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,

  多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。

  如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法.

时间: 2024-08-30 16:50:57

安卓开发 service 简介的相关文章

安卓开发service

如果把Activity比喻为前台程序,那么service可以看做是一个后台程序.Service跟Activity一样也由Intent调用. 在工程里想要添加一个Service,先新建继承Service的类,然后到AndroidManifest.xml -> Application 中的Service标签中添加. 如下: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android

Android——开发环境简介

一,安卓平台概览 1,安卓采用分层架构:从上到下分别为: 1,应用程序层:包含了许多核心的引用程序,例如短信,日历: 2,应用程序框架:开发者可以完全访问核心应用程序所使用的API框架.该层简化了组件的复用,使得开发人员可以直接使用系统提供的组件来进行快速地开发,也可以通过集成灵活的加以扩展. 3,系统运行库:系统库和android运行时,部分C库跟Java库. 4,linux内核 2,安卓开发中四个重要组件: 1,activity 负责应用程序中数据的显示 2,Intent 在应用程序当中传输

SAP Web Service简介与配置方法

p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-size: 10.5000pt } h1 { margin-top: 17.0000pt; margin-bottom: 16.5000pt; margin-left: 0.0000pt; text-indent: 21.0000pt; page-break-after: avoid; text-al

安卓开发里面可能遇到的空指针异常

记录一下安卓开发中遇到的空指针异常: 第一个是:可能未在AndroidManifest.xml 里面定义Activity或者Service,或者路径写错了: 第二个是:当用到Bundle的时候,可能没有和指定的Intent 进行绑定,而在另一个Activity里面却接收数据,就会引发空指针异常了! 第三个是:当在Activity里面使用setContentView的时候,同时又定义了一些其他布局中的按钮,在使用的时候,可能会引发空指针异常! 安卓开发里面可能遇到的空指针异常,布布扣,bubuko

Amazon SQS(Simple Queue Service) 简介

SQS即Simple Queue Service, 是一个分布式的消息队列服务,使用它非常简单,消息队列服务可以用来buffer burst, 使整个服务异步处理,不要求组件始终可用. 开发人员最初使用 Amazon SQS 时只需用到五个 API: CreateQueue.SendMessage.ReceiveMessage.ChangeMessageVisibility 和 DeleteMessage. Amazon SQS 会尽量保持消息顺序,但是由于队列的分布式特性,SQS无法保证发送消

Web Service 简介

最近使用ODI的工具箱中的ODIInvokeWebService.因此简单了解下WebService的理论知识. 一.Web Service 简介 Web Service就是可编程的URL,使用标准的Internet协议(比如HTTP或 XML)远程可调用的应用程序组件. 二.为什么使用 Web Service? 本质:以标准化的方式实现企业内外各个不同服务系统之间的互调或者集成. Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换

安卓开发学习1

1.开发需要环境 需要去谷歌下载ADT,还有eclipse,jdk.然后把ADT作为eclipse插件装入. 2.安卓项目结构简介 src - 存放代码文件 gen - xml和代码的中转文件,由程序自动生成.不用去修改 assets - 资源目录 bin - 输出目录,不用去修改 AndroidManifest.xml - 整体的配置文件 3.安卓应用的基本结构 application - 作用域最广 activity - 一个单个视图的控制,activity之间传输信息需要借助applica

Android安卓开发知识库汇总

初级 Android 面试知识库 Android 面试题总结之Android 进阶(二) - fuchenxuan blog - 博客频道 - CSDN.NET 如何成为一名优秀的程序员 | Mystra 2016Android某公司面试题 | yuweiguo's blog 我面试到底问什么? - AndroidDeveloper - 知乎专栏 扫清Android面试障碍 [Android基础]Android总结篇 - 陶程的博客 - 博客频道 - CSDN.NET AndroidStudyD

安卓开发工具汇总,开发人员必备利器

安卓开发工具汇总,开发人员必备!安卓开发过程中需要用到各种工具,作为一名安卓开发人员,有木有感到亚历山大,那么多工具!今天给大家汇总了一下安卓开发工具,安卓开发人员必备利器! 1.Draw 9-Patch 这个九宫格绘画安卓开发工具(draw9patch.bat)可以让你很容易的通过一个所见即所得(WYS|WYG)的编辑器来创建一个九宫格NinePatch图. 2.ProGuard ProGuard 是一个免费的 Java类文件的压缩,优化,混肴器.它删除没有用的类,字段,方法与属性.使字节码最