特点:

后台运行,不可见,没有界面;

优先级高于Activity;

用途:

播放音乐,记录地理信息位置的告白,监听某种动作…

注意:

运行在主线程,不能用它来做耗时的请求或者动作

可以在服务中开一个线程,在线程中作耗时操作

类型:

本地服务(Local Service):

应用程序内部:

startService stopService stopSelf stopSelfResult

bindService unbindService

远程服务:(Remote Service):

Android系统内部的应用程序之间(同设备)

定义IBinder接口

生命周期:

左边是start方式启动的生命周期,右边是bind方式启动的生命周期:

img

Start方式特点:

服务跟启动源没有任何联系;

无法得到服务对象;

Bind方式特点:

通过Ibinder接口实例,返回一个ServiceConnection对象给启动源

通过ServiceConnetion对象的相关方法可以得到Service对象

start方式启动:

img

start方式销毁:

img

自定义Service类:

img

bind方式启动:

img

img

bind方式销毁:

img

自定义Service类:

```

public class MyBindService extends Service {

@Override

public void onCreate() {

​ super.onCreate();

}

public IBinder onBind(Intent intent) {

// IBinder这里无法直接使用,需要自己重写一个类去继承Binder

​ return new MyBinder();

}

public class MyBinder extends Binder{

​ public MyBindService getService(){

​ return MyBindService.this;

​ }

}

@Override

public boolean onUnbind(Intent intent) {

​ return super.onUnbind(intent);

}

//定义4个方法模拟播放器

@Override

public void onDestroy() {

​ super.onDestroy();

}

public void play(){

​ Log.e(“tyl”,”播放”);

}

public void pause(){

​ Log.e(“tyl”,”暂停”);

}

public void next(){

​ Log.e(“tyl”,”下一首”);

}

public void pervious(){

​ Log.e(“tyl”,”上一首”);

}

}

```

注册(两种方式一样):

img