深入浅出 Android核心组件Service(3)

移动开发 Android
本文51CTO专栏作者傻蛋将向我们介绍深入浅出 Android核心组件Service第三部分的系列文章。当我们继想绑定一个Service又想在 Activity停止时,Service不会停止,我们可以先StartService,然后再BindService()。

前两节中可以看到Activity和Service,context.startService对应着Service中的onStart()方法,context.onBindService对应的是Service中的onBind()方法。当我们继想绑定一个Service又想在 Activity停止时,Service不会停止,我们可以先StartService,然后再BindService()。这时候的流程图如下所示:

 

 

点击查看大图

此时需要注意一个问题,当Activity退出的时候,Sercvice并不会停止,此时我们可以再进入Activity重新绑定,当这时候 Service就会调用onRebind()方法,但是调用onRebind()方法的前提是先前的onUnbind()方法执行成功,但是使用 super.onUnbind(intent)是执行不成功的,这时候我们要手动的使其返回true,再次绑定时Rebind()就会执行。否则,如果退出时不显示的指定onUnbind()为成功的话(为false),那么重新启动此Activity来绑定服务时,Service的onBind()方法和onReBind都不会执行,但是ServiceConnection方法确一定会回调了。这说明在Service中的onBind()方法不同于 onStart()方法不能被重复调用。

本节代码和上节代码大致相同,只不过是在bind之前先start service ,大家可以在DDMS中看onUnbind() onRebind()的调用情况。本节代码在此下载:http://down.51cto.com/data/326376

责任编辑:佚名 来源: 最牛网
相关推荐

2012-02-07 14:37:01

Android核心组件Service

2012-02-07 14:45:52

Android核心组件Service

2012-02-07 15:16:01

Android核心组件Service

2012-02-07 15:29:17

Android核心组件Service

2012-02-21 13:55:45

JavaScript

2011-07-04 10:39:57

Web

2021-03-16 08:54:35

AQSAbstractQueJava

2011-05-05 14:44:43

SurfaceFlinSurfaceActivity

2013-11-14 15:53:53

AndroidAudioAudioFlinge

2022-05-06 07:19:11

DOMDiff算法

2022-09-26 09:01:15

语言数据JavaScript

2021-07-20 15:20:02

FlatBuffers阿里云Java

2019-01-07 15:29:07

HadoopYarn架构调度器

2012-05-21 10:06:26

FrameworkCocoa

2017-07-02 18:04:53

块加密算法AES算法

2022-01-13 09:38:25

Android架构设计

2021-07-19 11:54:15

MySQL优先队列

2009-11-17 17:31:58

Oracle COMM

2016-10-14 13:53:05

JavascriptDOMWeb

2016-10-14 14:32:58

JavascriptDOMWeb
点赞
收藏

51CTO技术栈公众号