介绍
Service作为安卓的四大组件之一。顾名思义,他主要是为服务而生,所以他不像Activity一样,给我们一个可视化的界面,通常而言,它主要是用于为我们“默默的”执行后台一些耗时的操作。
启停服务
public void startService(){
startService(new Intent(this,MyService.class));
}
public void stopService(){
stopService(new Intent(this,MyService.class));
}
当Service启动时,会经历onCreate() -> onStartCommand()等生命周期,当执行stopService时,直接调用onDestroy方法。这里要注意的是:当多次调用startService时,该Service只会被创建一次,即onCreate()只会被调用一次,但是每次启动都会调用onStartCommand()都会被调用。
绑定/解绑服务
public void bindService(){
bindService(new Intent(this,MyService.class),connection, Context.BIND_AUTO_CREATE);
}
public void unBindService(){
unbindService(connection);
}
// MainActivity 和MyService绑定的桥梁
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
}
};
// 一般的写法,当此Activity被销毁的时候,自动解绑
@Override
protected void onDestroy() {
super.onDestroy();
unbindService(connection);
}
当调用者调用bindService方法时,会经历onCreate() -> onBind()等生命周期,此时,调用者跟Service就捆绑在一起了,当调用者销毁或者调用了unbindService方法时。Service就会调用onUnbind() -> onDestroy()等生命周期。这里要注意的是:当多次调用bindService时,onCreate()和onBind()只会在第一次被调用。