背景
Activity.OnCreate中绑定服务
// 启动服务
intent = new Intent(this, VPNService.class);
//startService(intent);
bindService(intent, conn, BIND_AUTO_CREATE);
Activity.OnDestroy中解绑服务
if (isBind) {
unbindService(conn);
}
当正常退出时,VPNService调用了OnDestroy方法
可是,在通过PendingIntent再次启动VPNService时,退出Activity时,没有调用OnDestroy方法
原因
查了许久,终于在看到<<深入理解Service生命周期及前台服务>>时,得到思路。
若我们既启动了Service也绑定了Service,那么就必须保证在解除所有绑定的同时也调用stopService来停止Service,才可能真正的结束掉该Service。
解决方案
添加stopService方法的调用
stopService(intent);
if (isBind) {
unbindService(conn);
}