首页 文章

服务未正确关闭

提问于
浏览
1

我有一个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)”行时,它将正常关闭!

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

EDIT:

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

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

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

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

1 回答

  • 0

    使用 finish() 而不是 System.exit(0)

相关问题