Service类onStartCommand()返回值讲解.

转载 2015年11月18日 16:21:01

继承Service类来实现一个被启动类型的服务很简单,如果你需要服务执行多线程(而不是通过工作队列来处理启动请求),那么你就要继承Service类来处理每个Intent。

继承Service类,onStartCommand()执行后,业务代码马上同时执行,不像IntentService那样以队列排队执行。

但是,因为你自己处理每个onStartCommand()方法的调用,你就能够同时执行多个请求。如果你想要这么做的话,那么你就能够给每个请求创建一个新的线程,并且立即运行它们(而不是等待前一个请求完成)。

注意:onStartCommand()方法必须返回一个整数,这个整数是一个描述了在系统的杀死事件中,系统应该如何继续这个服务的值(虽然你能够修改这个值,但是IntentService处理还是为你提供了默认实现)。从onStartCommand()方法中返回的值必须是以下常量:

START_NOT_STICKY

如果系统在onStartCommand()方法返回之后杀死这个服务,那么直到接受到新的Intent对象,这个服务才会被重新创建。这是最安全的选项,用来避免在不需要的时候运行你的服务。

START_STICKY

如果系统在onStartCommand()返回后杀死了这个服务,系统就会重新创建这个服务并且调用onStartCommand()方法,但是它不会重新传递最后的Intent对象,系统会用一个null的Intent对象来调用onStartCommand()方法,在这个情况下,除非有一些被发送的Intent对象在等待启动服务。这适用于不执行命令的媒体播放器(或类似的服务),它只是无限期的运行着并等待工作的到来。

START_REDELIVER_INTENT

如果系统在onStartCommand()方法返回后,系统就会重新创建了这个服务,并且用发送给这个服务的最后的Intent对象调用了onStartCommand()方法。任意等待中的Intent对象会依次被发送。这适用于那些应该立即恢复正在执行的工作的服务,如下载文件。

相关文章推荐

Service类onStartCommand()返回值讲解.

转自:http://blog.csdn.net/taki_dsm/article/details/8865913

Android中Service类onStartCommand方法int型返回值

Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStart...

Android中Service类中onStartCommand返回值介绍

Android中调用startService(Intent intent)会调用该Service对象的onStartCommand(Intent intent, int flags, int star...

【移动开发】Service类onStartCommand()返回值和参数

Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStart...

Service中onStartCommand方法返回值的探索

onStartCommand方法的返回值 有4种:START_STICKY、START_NOT_STICKY、START_REDELIVER_INTENT、START_STICKY_COMPATIBI...

Service.onStartCommand() 返回值详解

温故而知新,最新在复习的时候,突然发现又学到了不少东西。我们开启一个服务的时候,会调用onStartCommand()方法。 onStartCommand源码:private boolean mSt...

Service: onStartCommand 诡异的返回值

通过 startService 启动的服务,一定会调用 service 的 onStartCommand 方法。 Service 源码里面,onStartCommand 方法的原型 ...

Android Service的onStartCommand方法返回值作用

Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStart...

Android平台调用Web Service:线程返回值

接上文 遗留问题 对于Java多线程的理解,我以前仅仅局限于实现Runnable接口或者继承Thread类,然后重写run()方法,最后start()调用就算完事,但是一旦涉及死锁以及对共享资源的访问...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Service类onStartCommand()返回值讲解.
举报原因:
原因补充:

(最多只允许输入30个字)