如何启用Service,如何停用Service

一.步骤

第一步:继承Service类

public class SMSService extends Service { }

第二步:在AndroidManifest.xml文件中的<application>节点里对服务进行配置:

<service android:name=".DemoService" />

二.Context.startService()和Context.bindService

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

以启动Service,但是它们的使用场合有所不同。

1.使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。

使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止。

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

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

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

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

接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。

1.Service常用生命周期回调方法如下:

onCreate() 该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次startService()或bindService()方法,

服务也只被创建一次。 onDestroy()该方法在服务被终止时调用。

2. Context.startService()启动Service有关的生命周期方法

onStart() 只有采用Context.startService()方法启动服务时才会回调该方法。该方法在服务开始运行时被调用。

多次调用startService()方法尽管不会多次创建服务,但onStart() 方法会被多次调用。

3. Context.bindService()启动Service有关的生命周期方法

onBind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务绑定时被调用,

当调用者与服务已经绑定,多次调用Context.bindService()方法并不会导致该方法被多次调用。

onUnbind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务解除绑定时被调用。

备注:

1. 采用startService()启动服务

Intent intent = new Intent(DemoActivity.this, DemoService.class);

startService(intent);

2.Context.bindService()启动

Intent intent = new Intent(DemoActivity.this, DemoService.class);

bindService(intent, conn, Context.BIND_AUTO_CREATE);

//unbindService(conn);//解除绑定

时间: 2024-10-08 00:08:54

如何启用Service,如何停用Service的相关文章

Service和Thread的关系及如何启用Service,如何停用Service

Service和Thread的关系: 不少Android初学者都可能会有这样的疑惑,Service和Thread到底有什么关系呢?什么时候应该用Service,什么时候又应该用Thread?答案可能会有点让你吃惊,因为Service和Thread之间没有任何关系! 之所以有不少人会把它们联系起来,主要就是因为Service的后台概念.Thread我们大家都知道,是用于开启一个子线程,在这里去执行一些耗时操作就不会阻塞主线程的运行.而Service我们最初理解的时候,总会觉得它是用来处理一些后台任

svcs (service status) 和 svcadm (service administration) 使用

1. svcs  显示服务实例的状态信息 svcs - report service status  显示服务状态命令 DESCRIPTION The svcs command displays information about service instances as recorded in the service configuration repository. 该命令显示记录在服务配置库中的服务实例信息 The first form of this command prints one

How to Remove A Service Entry From Win10 Service List

.warnbanner { width: 600px; background-color: #FFEFCE } .warnbanner.border { border: 0px } .warnbanner .title { position: relative; height: 24px; line-height: 24px; background-color: #FF9900; text-align: center; vertical-align: middle } .warnbanner .

Web Service(1):用Web Service实现客户端图片上传到网站

由于项目需要,通过本地客户端,把图片上传到网站.通过webservice. 这是客户端代码: 1 private void btnimg_Click(object sender, EventArgs e) 2 { 3 this.yanzheng(); 4 mylocalhost.MySoapHeader myheader = new mylocalhost.MySoapHeader();///这是soapheader 5 mylocalhost.MyWebService myService =

WCF Failed to invoke the service. Possible causes: The service is offline or inaccessible

今天写WCf 时遇到如下报错: 调试过程发现,各个过程都无异常,但是返回给调用端数据时出现如下错误. Failed to invoke the service. Possible causes: The service is offline or inaccessible; the client-side configuration does not match the proxy; the existing proxy is invalid. Refer to the stack trace

【起航计划 033】2015 起航计划 Android APIDemo的魔鬼步伐 32 App-&gt;Service-&gt;Foreground Service Controller service使用,共享service,前台服务,onStartCommand

Android系统也提供了一种称为“Service”的组件通常在后台运行.Activity 可以用来启动一个Service,Service启动后可以保持在后台一直运行,即使启动它的Activity退出或是切换到别的应用Service也能保持运行状态. Service 可以以两种形式存在: Started 当一个如Activity使用startService()来启动一个Service,一旦Service启动后,就不受启动它的Activity控制, 可以在后台长期运行,通常这种Service在后台

Web Service(0):用Web Service实现两个整数运算

最近,项目开发中需要用到Web Service.自己在网上搜集资料.自己做了一个小例子,用来加深自己对Web Service理解. 概念:Web Service主要是为了使原来各孤立的站点之间的信息能够相互通信.共享而提出的一种接口. Web Service所使用的是Internet上统一.开放的标准,如HTTP.XML.SOAP(简单对象访问协议).WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用.注:SOAP协议(Simple Objec

com.alibaba.dubbo.rpc.RpcException: Forbid consumer 10.254.7.50 access service com.qingmu.core.service.ContentService from registry 192.168.200.128:2181 use dubbo version 2.8.4

Could not complete request com.alibaba.dubbo.rpc.RpcException: Forbid consumer 10.254.7.50 access service com.qingmu.core.service.ContentService from registry 192.168.200.128:2181 use dubbo version 2.8.4, Please check registry access list (whitelist/

关于dubbo调度时出现Request processing failed; nested exception is com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method insertTestTb in the service cn.cuibusi.core.service.TestTbService.的解决办法

在用dubbo跨项目调度service时出现如下错误: 错误原因:pojo没有实现序列化 今天刚好复习了序列化,在分布式环境下,当进行远程通信时,无论是何种类型的数据,都会以二进制的形式在网络上进行传送.序列化是一种将对象,以一连串的字节描述的过程,用于解决在对对象流进行读写时所引发的问题. 解决方法:在pojo实现序列化接口即可