文档章节

android服务类 Service

一个游戏8
 一个游戏8
发布于 2015/12/28 13:46
字数 1016
阅读 87
收藏 0

                当只使用startService()来启动服务

startService可以多次调用,stopService()也可以多次调用。

总结:::startService第一次调用的时候,Service的生命周期方法

       onCreate()---->onStartCommand()会执行。再次并多次调用startService会使Service的        生命周期方法onStartCommand()多次执行,onCreate()方法不执行了。

总结:::调用stopService()是如果Service已经启动,Service的生命周 期方法 onDestroy()会                                  执行。再次并多次调用没有任何反应不回调生命周期方法了。可以多次调用(不崩溃)

 

  

Service 中的onStartCommand()必须返回一个整数.这个整数描述了在系统杀死它的事件中系统如何继续这个服务onStartCommand()也返回值必须是下面常量之一:

  • START_NOT_STICKY

      如果系统在onStartCommand()返回后杀死了服务,不要重新创建这个service,除非还有挂起的intent需要被传送.这是避免在不必要时运行你的service和当你的应用可以简单重启任何未竟的工作时的最佳选择.

  • START_STICKY    如果强制退出了  那么他会使用一个null 的intent  请注意

      如果系统在onStartCommand()返回后杀死了这个service,会重新创建这个service并且调用onStartCommand(),但是不再重新发送上次最后一个intent,而是使用一个nullintent调用onStartCommand(),除非有一些挂起的intent,在此情况下,这些挂起的intent被派送.这适合于媒体播放器(or或相似也的服务),它不执行命令,但是无限期的运行并等待一个工作.

  • START_REDELIVER_INTENT

      如果系统在onStartCommand()返回后杀死了service,重新创建这个service并且使用上次最后一个intent调用onStartCommand().任何挂起的intent都顺序地被派送.这适合于活跃地执行一个工作并且应被立即恢复的服务,比如下载一个文件

 

                当只使用bindservice()来启动服务

 

bindservice()方法可以多次调用,unbindService()方法不可以多次调用(应用会崩溃)。

总结:::bindService()并且《bindService()方法第三个参数

      是Context.BIND_AUTO_CREATE》 的时候,第一次调用bindService()方法       Service生命周期方法

      onCreate()-->onBind()执行,再次并多次调用生命周期方法不回调。

 

 

总结:::bindService()并且《bindService()方法第三个参数

      不是Context.BIND_AUTO_CREATE》的时候,第一次(再次多次)调用bindService()方       法Servic生命周期方法都不会回调。(因为这个时候服务没有启动)


 

总结:::unbindService()方法如果调用了,Service必须注册了(即调用过bindService方        法),service生命周期的onUnbind()-->onDestroy()。如果没有注册过那么调用     unbindService()会崩溃。所以不能再次并多次调用unbindService()。

 

 

 

 

 

 

 

 

 

       同时使用了 startService()bindService()并且《bindService()方法第三个参数                                                是Context.BIND_AUTO_CREATE》。

情况1:::如果我们只调用stopService(),不会回调任何生命周期方法。只有我们再次调                                                 用unbindService()才会执行ervice的生命周期的ubind()和onDestroy()方法。

情况2:::如果先调用unbindService()方法会先执行Service的生命周期的ubind(),然后再调                                               用stopService()方法就会执行Service的生命周期的onDestroy()方法。

总结:::在Context.BIND_AUTO_CREATE模式下同时使用了 startService()和bindService(),想要                                   完全退出Service必须调用stopService()和unbindService()两个方法。

 

          

          

      同时使用了 startService()bindService()并且《bindService()方法第三个参数

                            不是Context.BIND_AUTO_CREATE》。

情况1:::如果我们只调用stopService(),那就会执行Service的生命周期的unbind()和onDestroy()                                 方法(可以不必调用unbindService())。

情况2:::如果先调用unbindService()方法会先执行Service的生命周期的ubind(),如果再调                                               用stopService()方法就会执行Service的生命周期的onDestroy()方法。

总结:::不在Context.BIND_AUTO_CREATE模式下,同时使用了 startService()和bindService()                                        可以只调用stopService()方法来完全退出Service。


 

© 著作权归作者所有

共有 人打赏支持
一个游戏8
粉丝 8
博文 84
码字总数 25403
作品 0
成都
程序员
私信 提问
Android Service 服务(三)—— bindService与remoteService

一、bindService简介 bindService是绑定Service服务,执行service服务中的逻辑流程。 service通过Context.startService()方法开始,通过Context.stopService()方法停止;也可以通过Service.s...

长平狐
2013/01/06
1K
0
如何给Android应用创建本地服务

Android系统给应用提供了两种类型的服务:启动型本地服务和绑定型本地服务,这两种服务的详细信息请参考“Android Service开发指南” Android Service开发指南原文网址如下: http://develop...

长平狐
2012/10/16
216
0
android Service 服务的生命周期

1、Service的概念 2、Service的生命周期 3、实例:控制音乐播放的Service 一、Service的概念 Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,只不过它没有UI界...

mayi
2011/11/14
0
2
Service的生命周期与Activity生命周期区别

碰到一面试题 简述activity/service生命周期? 组件的生命周期 应用程序组件都有一个生命周期,从响应Intent的Android实例开始到这个实例被销毁。在这期间,他们或许有效或许无效,有效时或许...

xiahuawuyu
2012/07/24
0
0
Android Service使用方法--简单音乐播放实例

Service翻译成中文是服务,熟悉Windows 系统的同学一定很熟悉了。Android里的Service跟Windows里的Service功能差不多,就是一个不可见的进程在后台执行。 Android中的服务,它与Activity不同...

鉴客
2011/11/14
40.3K
18

没有更多内容

加载失败,请刷新页面

加载更多

什么时候使用字节流、什么时候使用字符流,二者的区别

在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。 InputStream 和OutputStream,...

watermelon11
51分钟前
4
0
Alpakka Kafka,反应式Kafka客户端

Alpakka Kafka 是一个要用于 Java 和 Scala 语言的开源的流感知和反应式集成数据线项目。它建立在 Akka Stream之上,提供了 DSL 来支持反应式和流式编程,内置回压功能。Akka Streams 是 Re...

羊八井
今天
4
0
PHP7源码编译安装详解

$ yum groupinstall "development tools"$ yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype \freetype-devel libpng libpng-devel libxml2 ......

问题终结者
今天
5
0
Django学习笔记-从创建虚拟环境到启用服务

1 前置条件 windows系统下,目前已经完成anaconda3或miniconda3的安装,这也意味着已经完成了python3的安装。 2 创建虚拟环境 1、通过Anaconda Prompt,使用conda命令创建虚拟环境(base) e...

davidwbnu
昨天
4
0
python学习04:函数的定义及基本使用

python可以像c++一样,可以直接定义函数。具体格式如下: def(关键字) 函数名(形参01,形参02...): do_something... #如果有返回值,则调用以下语句 return 返回值...

太空堡垒
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部