【发布时间】:2014-04-08 14:16:01
【问题描述】:
我有一个使用 BIND_AUTO_CREATE 绑定到我的 Activity 并以 START_STICKY 启动的服务。我没有明确调用 startService()。
由于当我的 Activity 被杀死时并不总是调用 onDestroy() 方法,并且 onStop() 方法不可行,因为我不希望我的服务在用户只需按下 Home 按钮时停止,我不知道何时解除绑定我的服务。
这是我的问题:
如果我希望我的 Service 在我的 Activity 处于活动状态时运行并在我的 Activity 被终止时停止,我应该在哪里取消绑定我的 Service?
当前调用 onDestroy() 方法并调用 unbindService() 时,不会触发 Service 的 onUnbind() 方法。为什么?
【问题讨论】:
-
好问题。但是真的有必要绑定到服务吗?我真的很喜欢 IntentService 模式。那里的服务一旦完成它的任务就会关闭。通信是通过广播和 IntentReceivers 完成的。
-
实际上,我有 2 个服务使用警报管理器每隔 x 秒唤醒一次以执行它们的任务。我想我可以使用我的活动上下文而不是使用服务!如果我理解得很好,只有在 Activity 被杀死时它们必须保持活动状态时才应该使用服务?
-
如果你有AlarmManager,你可以通过实现一个对你的警报做出反应的广播接收器而无需服务。如果您希望在没有 UI 的情况下进行一些长时间运行的操作(即与服务器同步、更新数据库),您可能需要一项服务。
标签: android service bind ondestroy