Android 安卓服务:活动结束时会发生什么?

Android 安卓服务:活动结束时会发生什么?,android,android-service,android-lifecycle,Android,Android Service,Android Lifecycle,假设活动A启动服务S并绑定到服务S 当A被破坏时,S会发生什么 如何重新创建另一个绑定到S的活动?中的示例代码将取消绑定onStop()中的服务。我认为如果我再次打开应用程序,将为a和S的另一个实例创建一个新流程。但我希望新活动从旧服务获取数据 如果您通过startService()启动服务,它将在活动完成后保持剩余。 如果您通过bindService()启动服务,它将一直存在,直到最后一个活动从中解除绑定为止。 另外,如果服务已经启动,并且您调用startService()则不会创建新的服务实

假设活动A启动服务S并绑定到服务S

  • 当A被破坏时,S会发生什么

  • 如何重新创建另一个绑定到S的活动?中的示例代码将取消绑定onStop()中的服务。我认为如果我再次打开应用程序,将为a和S的另一个实例创建一个新流程。但我希望新活动从旧服务获取数据


  • 如果您通过
    startService()
    启动服务,它将在活动完成后保持剩余。 如果您通过
    bindService()
    启动服务,它将一直存在,直到最后一个活动从中解除绑定为止。 另外,如果服务已经启动,并且您调用
    startService()
    则不会创建新的服务实例,但在活动服务中,将执行方法
    onStartCommand()
    。 当您绑定到living服务时,将执行methon
    onBind()

    What will happen to S when A is destroyed?
    
    如果A是绑定到S的唯一活动,并且您没有通过
    startService(Intent)
    启动服务,S将被销毁。这是因为服务将一直处于活动状态,直到最后一个绑定活动从服务中解除绑定。这是有案可查的

    如果A被绑定,并且您通过Intent切换到活动B,则当B绑定到服务时,服务将被销毁并重新创建

    如果即使没有活动绑定到服务,也希望该服务处于活动状态,则必须使用
    startService(Intent)
    调用该服务。现在,如果你明确地停止它,或者系统意味着是时候摧毁它了,它就会出现。如果不希望出现这种行为,请保留数据并在给定时间访问它

    I think if I open the app again, a new process is created for another instance of A and S
    
    该进程保持不变,直到该进程从系统中终止,或者如果您终止该进程,则不建议这样做

    编辑:

    只有绑定的服务生命周期依赖于活动。如果您想要单机版,请使用
    startService()
    。这样,只要应用程序的进程启动,或者您使用
    stopService()/stopSelf()
    明确停止服务,它就可以独立于活动并在后台运行。您甚至可以在自己的应用程序中使用服务,并使用IPC在应用程序之间进行通信。这都是用例的问题


    正如您所见,服务的配置非常灵活,您必须决定哪个最适合您的应用。

    。检查“使用服务的原因是执行长时间运行的任务”下的主题。如果服务的生命周期取决于某个活动(可能会被破坏?),那么该服务如何执行长时间运行的任务?
    I think if I open the app again, a new process is created for another instance of A and S