Service的启动与停止、绑定与解绑,service停止绑定
---恢复内容开始---
Service的意义就在于当软件停止之后还可以在背景中进行运行,换句话也就是说,比如一个音乐播放器,当我们退出音乐播放器的时候,还是希望它在背景中运行,也就是一直播放着音乐,这时候Service就派上了大的用途。
Service的生命周期和Activity的生命周期差不多。也有开启和停止。onCreate()方法是初始化配置,onDestroy()是释放所有剩余的资源。Service周期是发生在onCreate()和onDestroy()之间的。
startService()方法是启动Service。
StopService()方法是停止Service。
bindService()方法是启动Service的激活生命周期始于onBind()调用,在onUnbind()返回时结束。
当一个组件启动Service时,是通过startService()进行启动Service,当Service被启动之后,onStartCommand()方法被调用,并且接收startService()方法中传递的Intent值。
onStartServiceCommand()方法必修返回一个整形值。这个整形值是说明了Service在系统中如何执行。其中三个比较常用的解释如下:
START_NOT_STICKY:如果系统在onStartServiceCommand()返回后杀死Service,那么不会重新创建Service,除非有等待的Intent要传递。
START_STICKY 如果系统在onStartServiceCommand()返回后杀死Service,重启Service,并且重新调用onStartServiceCommand(),但不重新传递最新的Intent。
START_REDELIVER_INTENT 如果系统在onStartServiceCommand()返回后杀死Service,那么重新创建Service,并且最近传给Service的Intent调用onStartServiceCommand()。
创建一个Service启动周期的实例
1 public class MyService extends Service{ 2 3 //必须实现的方法,作用是用来返回binder对象 4 5 6 //重写onBind()方法,返回Service实例,使Service支持绑定,实现onBind()方法,并且返回MyService实例 7 @Override 8 public IBinder onBind(Intent intent) { 9 // TODO Auto-generated method stub 10 System.out.println("--onBind--"); 11 return null; 12 } 13 14 15 //用于创建Service的方法,只能调用一次 16 public void onCreate(){ 17 super.onCreate(); 18 System.out.println("--onCreate--"); 19 20 //每次启动Service时都会调用这个方法 21 @Override 22 public int onStartCommand(Intent intent, int flags, int startId) { 23 // TODO Auto-generated method stub 24 System.out.println("--onStartCommand--"); 25 return super.onStartCommand(intent, flags, startId); 26 } 27 28 //解绑的时候使用的这个方法 29 @Override 30 public boolean onUnbind(Intent intent) { 31 // TODO Auto-generated method stub 32 System.out.println("--onUnbind--"); 33 return super.onUnbind(intent); 34 } 35