分析onStartCommand方法参数的作用和返回值的作用:
1、根据这个方法的返回值不同可以有两种启动模式START_NOT_STICKY,START_STICKY,(当进行被杀死的时候,是否重新启动。如果是参数:START_REDELIVER_INTENT表示当服务所在进程被杀死后,重新启动,并且重新传递Intent内容,其它两个参数不会重新传递intent,都为null)
2、返回START_REDELIVER_INTENT的时候,如果不论启动多少次,当重新启动的时候,也会启动多少次。
3、是当前服务的标记
4、第三个参数startId表示当前启动的Service的次数。
下面看一下测试源码:
HelloSerivce.java
public class HelloService extends Service {
Handler handler = new Handler();
private final IBinder mBinder = new HelloBinder();
@Override
public void onCreate() {
Log.v(“verbose”, “onCreate”);
super.onCreate();
}
/**
-
用这种方式 ,从Activity启动服务之后,在后台运行的,之后就没有与Activity联系了 如果有bind方法
-
,在整个过程中与Activity进行通信
-
根据这个方法的返回值不同可以有两种启动模式START_NOT_STICKY,START_STICKY,
-
START_REDELIVER_INTENT服务被系统杀死后是否自动重启,和是否重新传递intent。
-
如果被杀死之后重新启动服务,会重新调用onCreate,和onStartCommand方法
-
,但是重新调用onStartCommand的时候,不会再次传递参数。。
-
返回START_REDELIVER_INTENT的时候,如果不论启动多少次,当重新启动的时候,也会启动多少次。
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.v(“verbose”, “onStartComand”);
handler.post(new Runnable() {// 用通常用Handler线程跟UI线程打交到
@Overr