2012-04-17 114 views
2

我有一个由多个活动组成的应用程序。所有活动必须访问本地服务。我想,当我启动应用程序要启动的服务,并停止在Android开始/停止服务

一)应用程序被破坏(返回键)

二)应用程序停止(Home键)

C)设备处于深度睡眠状态(电源键)

基本上,服务不应在没有可见活动时运行。

我在onResume()中的每个活动中绑定服务,并在onPause()中的每个活动中解除绑定服务。不幸的是,每当我切换活动时都会重新创建服务,因为服务在新活动绑定它之前会被解除绑定。

现在有人如何防止?

回答

1

假设你与Context.BIND_AUTO_CREATE绑定,那么你几乎就在那里。将服务绑定到onStart()并将其解除绑定到onStop()。您应该发现第二个活动的开始发生在应用程序从第一个切换到第二个活动时第一个活动的停止。我在我的应用程序中使用了这种技术,并记录了所有的方法;

FIRST Activity onCreate 
FIRST Activity onStart 
FIRST Activity onResume 
FIRST Activity onPause 
SECOND Activity onCreate 
SECOND Activity onStart 
SECOND Activity onResume 
FIRST Activity onStop 

所以对于一个短暂的瞬间两项活动被绑定到服务,没有任何伤害都:当我切换它们发生的顺序。当没有活动被绑定时,服务将停止。

+0

非常感谢,这就是我一直在寻找的! – osiris81 2012-04-17 20:14:40

0

看看this

但是,如果您选择执行onStartCommand()回调 方法,那么你必须明确停止服务,因为该服务 现在被认为是开始。在这种情况下,服务一直运行到 服务会停止使用stopSelf()或其他组件调用 stopService(),而不管它是否绑定到任何客户端。