我们常用的onStartCommand返回值有START_STICKY、START_NOT_STICKY、START_REDELIVER_INTENT等等。...getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.ECLAIR时默认为START_STICKY_COMPATIBILITY START_NOT_STICKY...START_REDELIVER_INTENT; 如果只希望Service一直存活不需要intent中的数据,那么return START_STICKY; 如果希望Service执行完指定的任务后销毁,那么return START_NOT_STICKY
startservice是哪种类型,粘性的还是非粘性的 * START_STICKY:粘性的,遇到异常停止后重新启动,并且intent=null * START_NOT_STICKY...isStop=true; } break; } return START_NOT_STICKY
START_REDELIVER_INTENT : START_NOT_STICKY; // 2 --> } 这里出现了两个部分:(1)onStart()方法(2)mRedelivery变量,下面将着重介绍...service will not be restarted until the * alarm goes off. */ public static final int START_NOT_STICKY...START_NOT_STICKY:默认模式,这是一个容许被杀的模式,随时允许被叫停 START_REDELIVER_INTENT:告诉系统在崩溃后重新启动服务,并重新传递在崩溃时存在的意图。
* @return 返回值规定此startservice是哪种类型,粘性的还是非粘性的 * START_STICKY:粘性的,遇到异常停止后重新启动,并且intent=null * START_NOT_STICKY...=null){ //停止之后要开始播放音乐 mediaPlayer.stop(); isStop=true; } break; } return START_NOT_STICKY
onStartCommand 函数 START_STICKY_COMPATIBILITY 返回值 3、 onStartCommand 函数 START_STICKY 返回值 4、 onStartCommand 函数 START_NOT_STICKY...background music playback. */ public static final int START_STICKY = 1; 4、 onStartCommand 函数 START_NOT_STICKY...service will not be restarted until the * alarm goes off. */ public static final int START_NOT_STICKY
如果为false,onStartCommand()方法会返回START_NOT_STICKY,如果进程死了,那么这个Intent也随着一起死了。...START_REDELIVER_INTENT : START_NOT_STICKY; } Service类从这里接收到Intent对象,然后调用onStart()方法,就执行到了onHandleIntent
START_REDELIVER_INTENT : START_NOT_STICKY; } @Override public void onDestroy() {...START_REDELIVER_INTENT : START_NOT_STICKY; } 我们可以看到在onStartCommand转调了onStart()方法 4)onStart()方法 @Override
START_NOT_STICKY 系统不重新创建服务,除非有将要传递来的intent。这是最安全的选项,可以避免在不必要的时候运行服务。
START_REDELIVER_INTENT : START_NOT_STICKY; } @Override public void onDestroy() { mServiceLooper.quit
方法: 1、START_STICKY 2、START_NOT_STICKY or START_REDELIVER_INTENT 这里主要解释这三个变量的意义: 1、 START_STICKY...2、 START_NOT_STICKY 在运行onStartCommand后service进程被kill后,并且没有新的intent传递给它。...如果返回START_NOT_STICKY,表示当Service运行的进程被Android系统强制杀掉之后,不会重新创建该Service,当然如果在其被杀掉之后一段时间又调用了startService,那么该...如果我们某个Service执行的工作被中断几次无关紧要或者对Android内存紧张的情况下需要被杀掉且不会立即重新创建这种行为也可接受,那么我们便可将 onStartCommand的返回值设置为START_NOT_STICKY
START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。
int onStartCommand(Intent intent, int flags, int startId) { Log.d(TAG, "onStartCommand"); return START_NOT_STICKY...(Intent intent, int flags, int startId) { Log.d(TAG, "onStartCommand"); scheduleJob(); return START_NOT_STICKY
onStartCommand(Intent intent, int flags, int startId) { handleStart(intent, startId); return START_NOT_STICKY
START_NOT_STICKY Constant to return from onStartCommand(Intent, int, int): if this service's process...简单说就是:进程被杀后,START_NOT_STICKY 不会重新唤起Service,除非重新调用startService,才会调用onStartCommand,而START_REDELIVER_INTENT...AMS存储所有杀死后需要重发的Intent 而START_NOT_STICKY跟START_STICKY都不需要AMS存储Intent,如下图: ?...那就不再重启Service,但是系统APP不受限制,bindService的那种先不考虑,其他的为被正常stop的都会调用scheduleServiceRestartLocked进行重启登记,不过对于像START_NOT_STICKY
START_NOT_STICKY或START_REDELIVER_INTENT用于有命令需要处理时才运行的模式。...介绍onStartCommand()需要用到的几个常量 (引自官方文档) START_NOT_STICKY If the system kills the service after onStartCommand
START_NOT_STICKY=2:“非粘性的”。使用这个返回值时,如果在执行完 onStartCommand 后,服务被异常 kill 掉,系统不会自动重启该服务。
START_REDELIVER_INTENT : START_NOT_STICKY; } 从源码我们可以看出,在onStart方法中,IntentService通过mServiceHandler的sendMessage...START_REDELIVER_INTENT : START_NOT_STICKY; } @Override public void onDestroy() {
onStartCommand (Intent intent, int flags, int startId)函数返回值有四个 START_STICKY、 START_NOT_STICKY、 START_REDELIVER_INTENT...START_NOT_STICKY“非粘性的”,使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务 START_REDELIVER_INTENT重传
三 Service常见属性及方法 属性: startMode(启动模式):指定服务的启动模式,包括START_STICKY、START_NOT_STICKY、START_REDELIVER_INTENT
2、START_NOT_STICKY:非粘性的服务。使用这个返回值时,如果服务被异常杀掉,系统不会自动重启该服务。 3、START_REDELIVER_INTENT:重传Intent的服务。
领取专属 10元无门槛券
手把手带您无忧上云