Service是Android的四大组件之一,与Activity比较相似的组件,只能运行于后台没有可视化的界面
1、开发Service需要两个步骤
定义一个service的子类
在Androidmanifest.xml文件中配置该service
定义子类MyService
public class MyService extends Service {
public MyBinder binder=new MyBinder();
public class MyBinder extends Binder {
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return binder;
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public boolean onUnbind(Intent intent) {
Log.v("======onServed========","断开联系了");
return true;
}
@Override
public void onDestroy() {
super.onDestroy();
}
Service也有属于自己的生命周期
onCreate()在第一次创建的时候会调用
onStartCommand(Intent intent, int flags, int startId)每次启用都会调用一次
onUnbind(Intent intent) 解除绑定调用
onDestroy() 销毁服务调用
Androidmanifest.xml中注册service
<service android:name=".activity.MyService"/>
服务的启动方式有两种
通过 startService(Intent i) 访问者与service之间没有关联,即使访问者离开服务仍然运行
通过 bindService() 访问者与服务绑定在一起,访问者离开服务停止
绑定列子
/**
* 服务连接监听
*/
private ServiceConnection connection=new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
binder = (MyService.MyBinder)service;
Toast.makeText(ClipDrawableActivity.this,"联系了",Toast.LENGTH_LONG).show();
}
@Override
public void onServiceDisconnected(ComponentName name) {
Log.v("======onServed========","断开联系了");
binder = null ;
}
};
//开始绑定
bindService(new Intent(ClipDrawableActivity.this,MyService.class),connection,Service.BIND_AUTO_CREATE);
会执行 onServiceConnected方法
//解除绑定
unbindService(connection);
执行了
@Override
public boolean onUnbind(Intent intent) {
Log.v("======onServed========","断开联系了");
return true;
}