普通开启
<!--配置服务 -->
<service android:name="com.itheima.service.FirstService">
</service>
// 点击按钮开启服务
public void click1(View v) {
Intent intent = new Intent(this, FirstService.class);
// 开启服务
startService(intent);
}
// 点击按钮停止服务
public void click2(View v) {
Intent intent = new Intent(this, FirstService.class);
stopService(intent);
}
public class FirstService extends Service {
@Override
public IBinder onBind(Intent intent) {
System.out.println("onBind");
return null;
}
//当服务第一次被开启的时候调用
@Override
public void onCreate() {`
System.out.println("onCreate");
super.onCreate();
}
//之后的点击的时候会一直执行此方法
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
System.out.println("onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
//服务销毁的时候执行
@Override
public void onDestroy() {
System.out.println("onDestroy");
super.onDestroy();
}
}
bindService 方式开启服务的特点
(1)当点击按钮第一次开启服务 会执行服务的onCreate方法 和 onBind()方法
(2) 当我第二次点击按钮在调用bindservice 服务没有响应
**(3) 当activity销毁的时候服务也销毁 不求同时生但求同时死
(4)通过bind方式开启服务 服务不能再设置页面里面找到 相当于是一个隐形的服务
(5)bindservice不能多次解绑 多次解绑会报错 多次绑定无响应
// 点击按钮通过 bindservice 方式去开启服务
public void click3(View v) {
Intent intent = new Intent(this,FirstService.class);
//连接到服务FirstService
conn = new MyConn();
System.out.println("bind----"+conn);
bindService(intent,conn, BIND_AUTO_CREATE);
}
//点击按钮 取消绑定服务
public void click4(View v) {
System.out.println("unbind----"+conn);
unbindService(conn);
}
//当activity销毁的时候调用
@Override
protected void onDestroy() {
//当activity销毁的时候 取消绑定服务
unbindService(conn);
super.onDestroy();
}
//用来监听服务的状态
private class MyConn implements ServiceConnection{
//连接成功后调用
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
}
//失去连接调用
@Override
public void onServiceDisconnected(ComponentName name) {
}
}