特点:
后台运行,不可见,没有界面;
优先级高于Activity;
用途:
播放音乐,记录地理信息位置的告白,监听某种动作...
注意:
运行在主线程,不能用它来做耗时的请求或者动作
可以在服务中开一个线程,在线程中作耗时操作
类型:
本地服务(Local Service):
应用程序内部:
startService stopService stopSelf stopSelfResult
bindService unbindService
远程服务:(Remote Service):
Android系统内部的应用程序之间(同设备)
定义IBinder接口
生命周期:
左边是start方式启动的生命周期,右边是bind方式启动的生命周期:
Start方式特点:
服务跟启动源没有任何联系;
无法得到服务对象;
Bind方式特点:
通过Ibinder接口实例,返回一个ServiceConnection对象给启动源
通过ServiceConnetion对象的相关方法可以得到Service对象
start方式启动:
start方式销毁:
自定义Service类:
bind方式启动:
bind方式销毁:
自定义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","上一首");
}
}
```
注册(两种方式一样):