Android - 停止广播接收器被服务终止

时间:2012-05-01 13:07:40

标签: android service android-activity android-intent broadcastreceiver

我构建了一个应用程序,它实现了许多广播接收器,并根据用户设置在服务中注册它们。该服务绑定到一个调用其某些方法的活动。 当一个广播接收器被调用时,它启动服务(或者如果它已经在运行则调用服务的启动)并传递一个字符串告诉服务该做什么。我的问题是当活动被销毁(后退按钮)时,服务也被销毁,从而杀死了广播接收器。

我知道我可以在清单中注册接收器,这意味着在调用它们以查看用户是否已选择该选项时进行检查。但是对应用程序至关重要的一个接收器是'android.intent.action.HEADSET_PLUG',它只能以编程方式注册。

所以我想我的问题是,当服务被销毁时,有没有办法让这个广播接收器保持活动状态? 如果没有,任何人都可以看到解决此问题的方法吗?

谢谢, 罗布

1 个答案:

答案 0 :(得分:3)

  

我的问题是,当活动被杀死时,服务被杀死,从而杀死广播接收器。

如果被“杀死”是指用户在设置应用中使用任务杀手或“强制停止”终止您的应用,则“已杀死”是适当的动词。但是,您的整个过程都被“杀死” - 它不会遵循您在此处描述的事件链。

如果被“杀死”,则表示用户通过“返回”按钮退出您的活动,这是因为您选择绑定到服务,而不是启动它。如果您希望服务在活动的生命周期内继续执行,则必须使用startService(),并确保有一些路径可以指示用户不再需要此服务,因此您知道何时致电stopService()

  

所以我想我的问题是,当服务被杀死时,有没有办法让这个广播接收器保持活动状态?

没有

  

如果没有人能看到解决此问题的方法吗?

启动您的服务,而不是(或可能除此之外)绑定到服务。