如果我的应用程序中没有其他活动在运行,如何停止Android服务?

Joh*_*ock 3 android android-service

有没有办法可以测试我的应用程序中还有其他活动是否还活着?我希望在onDestroy方法中停止服务,但是如果我的应用程序中没有其他活动在堆栈上仍然存在,则只想这样做.

我有调用停止主活动的onDestroy()方法中的服务.除了如果用户启动我的应用程序,然后在我的应用程序中启动一些活动,然后点击主屏幕和RELAUNCHES我的应用程序,它们将颠覆我的订单,主要活动现在将高于我的应用程序的其他活动之外,这是完美的.从这种状态,如果他们点击后退按钮并"退出"我的主屏幕,他们将触发onDestroy()方法并终止服务,即使堆栈上还有其他活动打开.我想通过停止服务来避免这种情况,如果我确定我的其他活动没有在堆栈上打开.可能?

Com*_*are 16

如果我的应用程序的任何活动仍然在堆栈中,我怎样才能启动将继续运行的服务,但是当没有任何活动停止时,它会被停止?

不要使用startService()stopService().相反,使用bindService()unbindService(),即使你真的不需要绑定连接.绑定/解除绑定是引用计数.如果您bindService()使用该BIND_AUTO_CREATE标志拨打电话,则第一个bindService()电话将启动您的服务.然后,当所有bindService()呼叫都有匹配的unbindService()呼叫时,Android将自动关闭您的服务.

  • 您希望服务启动/保持运行的每个Activity都需要在`onStart()`和`onStop()`中的`unbindService()`期间调用`bindService()`.另请参阅:http://stackoverflow.com/questions/2304086/binding-to-service-in-oncreate-or-in-onresume/2304794#2304794您的服务将数据"推送"到绑定活动的方式与如果您使用`startService()`:您将使用该服务注册回调. (3认同)