其他分享
首页 > 其他分享> > Android服务:Activity生命尽头会发生什么?

Android服务:Activity生命尽头会发生什么?

作者:互联网

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

>当A被破坏时,S会发生什么?
>如何重新创建绑定到S的另一个Activity? http://developer.android.com/guide/components/bound-services.html中的示例代码取消了onStop()中的服务绑定.我想如果再次打开该应用程序,则会为A和S的另一个实例创建一个新进程.但是我希望新活动能够从旧服务中获取数据.

解决方法:

What will happen to S when A is destroyed?

如果A是绑定到S的唯一活动,并且您没有通过startService(Intent)启动服务,则S将被销毁.这是因为在最后绑定的活动从服务取消绑定之前,服务将一直存在.文档记录为here.

How can I recreate another Activity that binds to S?

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

如果您希望该服务在没有活动绑定的情况下仍然有效,则必须使用startService(Intent)调用Servie.现在,如果您明确将其停止,或者系统意味着是时候将其销毁,那么它就会出现.如果您不希望出现这种情况,请保留您的数据并在给定的时间访问它.

I think if I open the app again, a new process is created for another instance of A and S

在从系统中终止该进程之前,或者如果您终止该进程(不建议这样做),则该进程保持不变.

编辑:

只有绑定的服务生命周期取决于“活动”.如果要独立使用,请使用startService().这样,只要应用程序启动,或者您通过stopService()/ stopSelf()显式停止服务,它就独立于Activity并在后台运行.您甚至可以在自己的应用程序中拥有服务,并使用IPC在应用程序之间进行通信.这完全取决于用例.

如您所见,服务的配置非常灵活,您必须确定最适合您的应用程序的配置.

标签:android-service,android-lifecycle,android
来源: https://codeday.me/bug/20191030/1967818.html