活动是否应该从onPause()中启动的Foreground服务解除绑定



如果一个活动想要绑定到启动的前台服务,它应该在onCreate((中绑定并在onDestroy((中取消绑定,还是在onResume((上绑定并在onPause((中解除绑定?

活动的内容取决于存储在服务中的数据,因此必须连接才能正确显示。后一种选择有什么好处吗?

由于设置ServiceConnection需要一些时间,在onResume()中绑定到Service可能为时已晚,您的应用程序无法顺利工作。除此之外,还将调用onPause(),例如,当您显示AlertDialog时,因此在那里解除绑定意味着您必须";重新绑定";一旦对话框被取消,再次等待ServiceConnection启动并运行。

绑定服务的文档说明

您通常在匹配过程中配对绑定和取消绑定并删除客户端生命周期中的时刻,如以下示例:

  • 如果您只需要在活动可见时与服务交互,则应在onStart((期间绑定,并在onStop((
  • 如果您希望活动在后台停止时也能收到响应,那么您可以在onCreate((和onDestroy((期间解除绑定。注意,这意味着你的活动需要在服务运行的整个过程中使用该服务(即使在后台(,所以如果服务处于另一个进程中,那么增加过程的重量系统会杀死它

因此,在您的情况下,您可以使用onStart()/onStop()

最新更新