当需要在服务中,对intent做什么事情的时候,先加入这个判断,特别是那个getAction不能忘了 if(intent!=null&&intent.getAction()!=null){//do something}
如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。 START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。 START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动...
这个Intent * 会被系统一直保存到{@link #stopSelf(int)}方法被调用为止。这种情况下,服务当中的 * {@link #onStartCommand(Intent, int, int)}里面的intent不会是null。因为这种服务只 * 会在所有启动它的intent都执行完了的情况下才不会重新启动。 */publicstaticfinalint START_REDELIVER_INTENT=3;...
"Service Created");}@OverridepublicintonStartCommand(Intentintent,intflags,intstartId){Log.d("MyService","Service Started, Intent: "+intent);// 在这里执行任务,例如下载或播放音频handleIntent(intent);returnSTART_STICKY;// 重启后继续}privatevoidhandleIntent(Intentintent){// 处理多种类型...
1):START_STICKY: 如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由 于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传 递到service,那么参数Intent将为null。
如果服务重新启动,且没有新的启动命令传递给它,则传递给onStartCommand方法的Intent将为null。 行为:适用于那些不依赖于特定Intent的服务,例如后台音乐播放器。 START_NOT_STICKY: 含义:服务被杀死后,系统不会自动重启服务。 行为:适用于那些执行一次性任务的服务,任务完成后不需要继续运行。 START_REDELIVER_INTENT...
intent的参数是null,原因是这个intent参数是通过startService(Intent)方法所传递过来的,但是如果Service在你的进程退出后有可能被系统自动重启,这个时候intent就会是null. 解决方法: 所以在使用intent前需要判断一下是否为空。 还有另外一种解决方法: 如果实现 onStartCommand去调度异步工作或者其他的线程,有必要设置START_...
START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。
(Intent, int, int) after creating the new service instance; if there are not any pending start commands to be delivered to the service, it will be called with a null intent object, so you must take care to check for this. This mode makes sense for things that will be explicitly ...
onStartCommand,除非重新收到一个未处理(pending悬而未决地)的Intent,在这种情况下(inwhich case),未处理的心得Intent仍然按照流程被传入和处理,但是前一次操作的Intent将会变null(等同于一次带null intent的启动)。对于不需要立刻执行命令的服务,如多媒体播放器(或者其他类似(similar)的服务)那么这样的...