Service的生命周期

Service启动的方式1  start:

 Activity.startService(intent); 开启

 Activity.stopService(intent);  停止

 Service的运行的生命周期为:

     onCreate();   onStartCommand(); onDestroy();

    如果Service已经启动 则不会再调用onCreate();会直接调用onStartCommand();

在当前Activity中启动Service ,可以在另一个Activity中停止Service;

如果当前app关闭,没调用stopService,Service会继续在后台运行;

Service启动方式2 binder:

Activity.bindService(); 绑定

Activity.unbindService(); 解除绑定

Service的生命周期为

  onCreate(); onBind(); onUnbind(); onDestroy();

如果当前Activity Finish();关闭后,会自动调用unbindService(),解除绑定;

Service会调用onDestroy();关闭服务;

当两种方式组合使用时

启动:

   Activity.startService(intent);

   Activity.bindService();

停止:(要调两个方法才能停止Service)

    Activity.stopService(intent)

    Activity.unbindService();

组合使用启动时 

  Activity.startService(intent);

     Activity.bindService();

  如果Service的 public boolean onUnbind(Intent intent) 返回true时

   调用Activity.unbindService();

  下次调用Activity.bindService();时;不会再调用onBInd(); 而是调用onRebind();

 Start Service 和Bind Service 的区别 :

 1.通过startservice开启的服务.一旦服务开启, 这个服务和开启他的调用者之间就没有任何的关系了. 
调用者不可以访问 service里面的方法. 调用者如果被系统回收了或者调用了ondestroy方法, service还会继续存在  。
2.通过bindService开启的服务,服务开启之后,调用者和服务之间 还存在着联系 , 
一旦调用者挂掉了.service也会跟着挂掉 .

原文地址:https://www.cnblogs.com/pbq-dream/p/5390797.html