注意:
- 運行在主線程,不能用于做耗時請求和操作,
- 可以開啟一個線程,在線程中做耗時操作。
啟動本地服務(wù):start和Bind方式。
生命周期:左邊為start方式,右邊為Bind方式

Service生命周期
特點:
- start方式:服務(wù)跟啟動源沒有任何聯(lián)系,無法得到服務(wù)對象,注意啟動后只會調(diào)用一次onStartCommand()方法
- Bind方式:通過Ibinder接口實例,返回一個ServiceConnection對象給啟動源,通過ServiceConnection對象的相關(guān)方法可以得到Service對象
- start方式
①新建類MyStartService繼承自Service,實現(xiàn)onCreate(),onStartCommand(),onDestroy()方法
②用Intent啟動和停止服務(wù)
啟動服務(wù)
Intent intent1=new Intent(MainActivity.this,MyStartService.class);
startService(intent1);
停止服務(wù)
stopService(intent1);
③ 在AndroidManifest注冊其權(quán)限,加在application標(biāo)簽中
<service android:name=".MyStartService"></service>
- Bind方式
eg:實現(xiàn)暫停,播放功能
①用IBinder對象
在繼承自Service的MyBinderService類
public class MyBinder extends Binder{
public MyBinderService getService(){
return MyBindService.this;
}
}
②新建MyBinderService類繼承Service,實現(xiàn)onCreate(),onBind(),onUnbind(),onDestory()方法
寫pause(),play()方法
public IBinder onBind(){
return new MyBinder();
}
③ 在主方法ServiceConnection()方法中得到MyBinderService實例
ServiceConnection conn=new ServiceConnection(){
//當(dāng)啟動源和Service成功連接時調(diào)用
public void onServiceConnected(ComponentName componentName,IBinder binder ){
MyBinderService service=((MyBinderService.MyBinder).IBinder).getService();
}
//當(dāng)啟動源和Service意外丟失時調(diào)用
public void onServiceDisconnected(ComponentName componentName) {}
}
④ 綁定和解綁定服務(wù)
綁定
Intent intent2=new Intent(MainActivity.this,MyBinderService.class);
bindService(intent2,conn,BIND_AUTO_CRERTA);
解綁
unbindService(conn);
⑤ 開啟服務(wù)
service.pause();
service.play();
⑥注冊權(quán)限,在application中注冊
<service android:name=".MyBinderService"></service>