如何仅在我的应用程序中没有其他活动运行时停止 Android 服务?
有没有办法测试我的应用程序中是否还有其他活动仍然存在?我希望在 onDestroy 方法中停止服务,但只想在堆栈上没有我的应用程序中仍然存在的其他活动时才执行此操作。
我在主活动的 onDestroy() 方法中调用停止服务。这非常有效,除非用户启动我的应用程序,然后在我的应用程序中启动一些活动,然后点击主屏幕并重新启动我的应用程序,他们将破坏我的订单,并且主要活动现在将高于我的应用程序的其他活动。在这种状态下,如果他们点击后退按钮并“退出”我的主屏幕,他们将触发 onDestroy() 方法并终止服务,即使堆栈上还有其他活动打开。我想通过仅当我确定堆栈上没有其他活动打开时才停止服务来避免这种情况。可能的?
Is there a way I can test if there are any other activities in my app still alive? I am looking to stop a service in an onDestroy method, but only want to do this if there are no other activities from my app still alive on the stack.
I have the call stop the service in the main activity's onDestroy() method. This works perfect EXCEPT that if a user launches my app, then launches a few activities in my app, then hits the home screen and RELAUNCHES my app, they will subvert my order and the main activity will now be above other activities of my app. From this state, if they hit the back button and 'back out' of my home screen they will trigger the onDestroy() method and kill the service even though there are other activities open on the stack. I want to avoid this by stopping the service ONLY if I am sure there are no other activities of mine open on the stack. Possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不要使用
startService()
和stopService()
。相反,即使您并不真正需要绑定连接,也可以使用bindService()
和unbindService()
。绑定/取消绑定是引用计数的。如果您使用BIND_AUTO_CREATE
标志调用bindService()
,则第一个bindService()
调用将启动您的服务。然后,当所有bindService()
调用都有匹配的unbindService()
调用时,Android 将自动关闭您的服务。Don't use
startService()
andstopService()
. Instead, usebindService()
andunbindService()
, even if you don't really need the bound connection. The bind/unbind is reference counted. If you callbindService()
with theBIND_AUTO_CREATE
flag, the firstbindService()
call will start your service. Then, when allbindService()
calls have had matchingunbindService()
calls, Android will automatically shut down your service.