3

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

我在主要活动的 onDestroy() 方法中调用停止服务。这很完美,除了如果用户启动我的应用程序,然后在我的应用程序中启动一些活动,然后点击主屏幕并重新启动我的应用程序,他们将破坏我的订单并且主要活动现在将高于我的应用程序的其他活动。在这种状态下,如果他们点击后退按钮并“退出”我的主屏幕,他们将触发 onDestroy() 方法并终止服务,即使堆栈上还有其他活动打开。只有当我确定堆栈上没有我的其他活动打开时,我才想通过停止服务来避免这种情况。可能的?

4

1 回答 1

16

我如何启动一项服务,只要我的应用程序的任何活动仍在堆栈上,它就会继续运行,但在没有任何活动时停止?

不要使用startService()stopService()。相反,使用bindService()and unbindService(),即使您并不真正需要绑定连接。绑定/取消绑定是引用计数的。如果您bindService()使用BIND_AUTO_CREATE标志调用,第一个bindService()调用将启动您的服务。然后,当所有bindService()呼叫都有匹配的unbindService()呼叫时,Android 会自动关闭您的服务。

于 2010-03-14T01:20:45.970 回答