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也会跟着挂掉 .