一、生命周期:
startService启动方式:onCreate()--->onStartCommand() --->onDestroy();
bindService启动方式:onCreate()--->onBind() --->onUnbind()--->onDestroy();
我们通过官方给出的一张图片来体会一下:
二、启动方式(基本使用方法):
startService:
Intent mIntent=new Intent(MainActivity.this,startServiceDemo.class) ;
startService(mIntent);//直接启动服务方式启动
stopService(mIntent);//停止服务
bindService:
ServiceConnection serviceConnection=new myServiceConnect();
Intent mBindIntent=new Intent(MainActivity.this,bindServiceDemo.class);
bindService(mBindIntent,serviceConnection,BIND_AUTO_CREATE);
unbindService(serviceConnection);
实现ServiceConnection接口
public class myServiceConnect implements ServiceConnection {
//绑定成功之后回调,Service中传递的数据,在此中接收
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
}
//
@Override
public void onServiceDisconnected(ComponentName componentName) {
}
}
三、启动方式区别:
1、生命周期的不同:startService生命周期为onCreate
2、重复调用是调用方法不同:
startService启动方式:重复调用时,onCreate()方法只会创建调用一次,startCommand()会每次都会被调用
bindService启动方式:重复调用时,onCreate()与onBind()都只会调用一次
3、与activity之间关系不同
startService启动方式:与activity之间没有什么关系,对应的activity被销毁时,不影响service
bindService启动方式:与activity绑定,当对应的activity销毁时,对应的服务也销毁
4、应用场景不同:
startService启动方式:与activity没有什么关系,所以常用于,只指定Service的操作,不需要service返回操作结果,不需要与Service建立联系的场景
bindService启动方式:activity需要Service操作完成后,返回一系列的返回结果的场景(这种场景也可以通过广播实现,但是操作频繁时会造成性能上的消耗)