服务未正确关闭

时间:2013-04-18 11:31:53

标签: android service

我有一个Android应用程序,它使用以下命令在主活动中启动服务:

bindService(new Intent(ctx, MyService.class), _connection, Context.BIND_AUTO_CREATE);

主要的活动对这项服务没有任何兴趣(这就是为什么我没有提供服务连接的代码)。这个想法是主要的活动是服务寿命!

用户点击我的应用程序的“关闭”按钮后,使用此代码“停止”服务:

if (_service != null) {
    unbindService(_connection);
}
//Some cleanup here ...
System.exit(0);

我知道此时没有其他活动被绑定到服务,因为每个活动都是从主活动调用的,并且他们从“onStop”服务解除绑定。

所以问题是我的服务在用户关闭应用程序时不会调用“onDestroy”! 当我删除“System.exit(0)”行时,它将正常关闭!

在这种情况下,如何确保服务正常关闭?

修改

好的,我读过这个讨论:Is quitting an application frowned upon?

现在我重建我的活动。我有一个使用startService调用服务的活动,之后它绑定服务。当活动被销毁时,它会调用unbindService。

服务本身在onStartCommand中返回START_STICKY,以使其更难杀死它。所有工作完成后,它会调用stopSelf。

现在我遇到的问题是,如果绑定仍然存在,我会收到ServiceConnectionLeaked消息!怎么样?我怎么能阻止这个?

1 个答案:

答案 0 :(得分:0)

使用finish()代替System.exit(0)

相关问题