Android-如何让一个service自己停止?
在一个程序中,我通过bind打开一个service,在service的任务结束后,我想通过stopItself(),关闭当前的service,可是发现一直没有调用onDestory(),代码如下:
final Context appContext = this.getApplicationContext();
final Intent intent = new Intent(appContext, MyService.class);
appContext.startService(intent);
ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName arg0, IBinder arg1) {
// TODO Auto-generated method stub
}
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}
// ...
};
appContext.bindService(intent, connection, BIND_AUTO_CREATE);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
BIND_AUTO_CREATE设置成0
一个service可以同时start并且bind,在这样的情况,系统会一直保持service的运行状态如果service已经start了或者BIND_AUTO_CREATE标志被设置。如果没有一个条件满足,那么系统将会调用onDestory方法来终止service.所有的清理工作(终止线程,反注册接收器)都在onDestory中完成。
把最后一行代码改一下
appContext.bindService(intent, connection, BIND_AUTO_CREATE);
改成:
appContext.bindService(intent, connection, 0);
是这样的,用户一路按后退按钮,退出程序时,执行的是finish();,Activity其实并没有彻底结束(destroy)只是沉没了,我解决这问题的办法是在最处的页面中拦截回退按钮,弹出提示询问是否彻底退出,还是仅仅最小化,如果用户选择退出就system.exit(0);,这样就保证onDestroy运行了。