2013-04-18 79 views
1

我有在该命令的主要活动启动的服务的Android应用程序:服务没有正确关闭

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

主要activty不excatly自认倒霉服务(这就是为什么我didn't提供代码为服务连接)。这个想法是,主要活动handels服务寿命!

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

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消息!那是什么?我怎么能阻止呢?使用

+0

http://stackoverflow.com/questions/2033914/quitting-an-application-is-that-frowned-upon – Raghunandan

回答

0

finish()代替System.exit(0)