Service的调用
Context.startService():Service会经历onCreate -> onStart(如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次 );stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。 注意,多次调用Context.startservice()不会嵌套(即使会有相应的onStart()方法被调用),所以无论同一个服务被启动了多少次,一旦调用Context.stopService()或者stopSelf(),他都会被停止。补充说明:传递给startService()的 Intent对象会传递给onStart()方法。调用顺序为:onCreate --> onStart(可多次调用) --> onDestroy。
Context.bindService():Service会经历onCreate() -> onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用 onUnbind -> onDestroyed相应退出,所谓绑定在一起就共存亡了 。
补充说明:传递给bindService()的Intent对象会传递给onBind(),传递给unbindService()的Intent对象会传递给onUnbind()方法。 调用顺序为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。
注意事项:在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他 onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。
broadcastRecevier只能通过startService启动Service ,因为广播本身生命周期很短,bind的话没有意义
Service的生命周期 :
Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy我们有两种方式启动一个Service,他们对Service
生命周期的影响是不一样的。
1 通过startService
Service会经历 onCreate -> onStart stopService的时候直接onDestroy
如果是调用者(TestServiceHolder)自己直接退出而没有调用stopService的话,Service会一直在后台运行。
下次TestServiceHolder再起来可以stopService。
2 通过bindService
Service只会运行onCreate, 这个时候 TestServiceHolder 和TestService绑定在一起
TestServiceHolder 退出了,Srevice就会调用onUnbind->onDestroyed所谓绑定在一起就共存亡了。
分享到:
相关推荐
本篇将深入探讨如何通过AIDL来调用Service,并进而启动Activity,以及相关的源码分析和工具使用。 首先,理解AIDL的基本概念是必要的。AIDL定义了一种接口,这个接口可以被多个进程共享,允许一个进程(如Service)...
本示例"一个及其简单的AIDL远程Service调用"展示了如何通过AIDL在客户端(TestAidlClient)与服务端(TestAidlService)之间建立通信,实现远程调用。 首先,我们需要理解Service的基本概念。在Android中,Service...
本DEMO将详细解释如何在一个Activity中调用Service接口,以便在后台执行特定任务。 首先,我们需要创建一个Service类。在AndroidManifest.xml文件中,必须声明这个Service,这样系统才能知道它的存在。声明Service...
总的来说,通过Web Service调用打印机打印自定义表单涉及到Web服务设计、前端表单绘制、数据转换、打印机API理解和安全控制等多个方面。开发者需要综合运用多种技术和工具,才能实现这个功能,并确保其稳定可靠。...
总结,WinCE平台上的Web Service调用涉及到的知识点包括:Web Service原理、.NET Compact Framework、添加Web引用、生成代理类、Web Service调用流程、XML处理、网络通信优化、线程管理和错误处理。了解并掌握这些,...
动态调用Web Service 在ASP.NET和C#中,动态调用Web Service是指在不添加Web Service引用的情况下,后台动态调用Web Service。这种方法可以完全动态处理,传入服务服务网址、方法名和参数即可。 在本例中,我们...
本教程将详细介绍如何在C#中调用WCF服务,以及在Visual Studio环境下创建和测试这个过程。 首先,理解WCF服务的基本概念至关重要。WCF服务是一种面向服务的架构,它允许开发者创建可以在网络上不同系统之间交换数据...
在标题和描述中提到的“WCFService可以通过web调用和WCF服务访问”,这意味着该服务已经配置为允许两种不同的调用方式。 1. **Web调用**:WCF服务可以通过HTTP协议暴露为Web服务,允许任何支持SOAP协议的客户端进行...
java调用webservice接口案例,精简,service调用webservice接口案例;不用生成一堆代码,逻辑清晰
三、XFire与Web Service调用 在Java中,使用XFire调用Web服务的基本步骤如下: 1. 创建客户端代理:XFire使用WSDL文档生成客户端代理类。这个代理类提供了服务方法的直接访问,就像调用本地方法一样。可以使用XFire...
这里我们关注的是"自己写的service及调用",这个话题涉及到Web服务(Web Service)的概念、Eclipse IDE的使用以及Java编程语言的应用。Web服务允许不同应用程序之间的数据交换,通常基于开放标准如XML、SOAP和WSDL,...
本实例将详细介绍如何在Android中实现远程Service调用,主要涉及AIDL(Android Interface Definition Language)以及Parcelable接口的使用。 **1. Android远程Service** 远程Service是Android系统中实现不同应用...
Web Service 远程调用技术 Web Service 是一种跨编程语言和跨操作系统平台的远程调用技术,通过 SOAP 在 Web 上提供的软件服务,使用 WSDL 文件进行说明,并通过 UDDI 进行注册。XML 是 Web Service 的基础,它是...
在windowxp以及之前的系统,window service中可以直接调用外部的exe,但是在vista以及win7以后,微软加了服务隔离,也就是说window服务和用户应用程序不再一个session里面,所以在window service中是不能直接调用...
类中的`Add`方法使用了`[WebMethod]`属性标记,表示这是一个可以通过Web Service调用的方法。 #### 三、如何调用Web Service 调用Web Service的过程通常涉及以下几个步骤: 1. **获取WSDL文件**:首先,需要从Web...
本文将详细介绍如何在SAP系统中实现对Web Service接口的调用,并通过实际案例进行演示。 #### 二、SAP调用Web Service概述 SAP调用Web Service通常涉及以下几个步骤: 1. **创建WebService连接**:首先需要在SAP...
6. **处理响应**:Web Service调用完成后,会返回结果。Java客户端需要处理返回的XML数据,将其反序列化回Java对象。 在提供的资源中,“web service_demo.rar”可能是.NET Web Service的示例代码或部署文件,...
Web服务(Web Service)是一种基于互联网的、使用标准XML(Extensible Markup Language)进行通信的软件服务,允许...通过实践"webservice_client"这个实例,你可以深入理解这些概念并掌握Web Service调用的具体步骤。
【标题】基于Axis的Web Service客户端调用 在IT领域,Web Service是一种通过网络进行通信的标准协议,它允许不同系统间的应用程序互相交换数据。而Apache Axis是Java平台上的一个开源工具,专门用于创建和部署Web ...