Android-如何让一个service自己停止?

发布于 2017-01-27 14:17:24 字数 856 浏览 1588 评论 2

在一个程序中,我通过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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜柠檬 2017-05-13 23:41:06

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);

晚风撩人 2017-03-30 06:03:10

是这样的,用户一路按后退按钮,退出程序时,执行的是finish();,Activity其实并没有彻底结束(destroy)只是沉没了,我解决这问题的办法是在最处的页面中拦截回退按钮,弹出提示询问是否彻底退出,还是仅仅最小化,如果用户选择退出就system.exit(0);,这样就保证onDestroy运行了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文