1

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

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

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

谢谢,罗伯

4

1 回答 1

3

我的问题是当活动被杀死时,服务被杀死,这反过来又杀死了广播接收器。

如果“killed”是指用户使用任务杀手或“设置”应用程序中的“强制停止”终止了您的应用程序,那么“killed”是适当的动词。但是,您的整个过程都被“杀死”了——它没有遵循您在此处描述的事件链。

如果“杀死”是指用户通过 BACK 按钮退出了您的活动,那是因为您选择绑定到服务,而不是启动它。如果您希望服务在活动的生命周期之后继续执行,您必须使用startService(),并确保用户可以通过某些路径表明他们不再需要此服务,以便您知道何时调用stopService()

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

不。

如果没有,任何人都可以看到此问题的解决方法吗?

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

于 2012-05-01T13:19:43.933 回答