如何在应用程序的生命周期内保持绑定服务运行?



我在MainActivity.java:中启动并绑定到类似这样的Service

@Override
protected void onStart() {
super.onStart();
Intent intent = new Intent(this, WebSocket.class);
bindService(intent, webSocket_connection, Context.BIND_AUTO_CREATE);
}

我在应用程序中根本不调用startService(intent)

我的问题是,如何确保绑定的服务在我的应用程序的生命周期中继续运行?如果它被系统杀死(如果主应用程序仍在运行(,如何重新启动它?

根据行为,绑定的服务寿命是直到最后一个组件绑定到它调用unbind或destroy。多个组件可以同时绑定到服务,但当所有组件都解除绑定时,服务就会被破坏。

因此,在您的情况下,您需要在应用程序生命周期中运行服务。您可以在您的第一个Activity中绑定服务,也就是说,这是您的主活动,然后在后续活动打开时绑定(仅在需要时(。。因此,当您的应用程序关闭时,最后一个要关闭的活动是Home Activity,它将解除绑定,服务将停止,因为它是最后一个绑定的组件。

注意->确保在"活动"中调用了正确的绑定和解除绑定生命周期方法。。如onCreate->onDestroy()onStart()->onStop()

如果你真正想要的是在活动(或应用程序(启动和停止时打开和关闭WebSocket,你必须检查Tinder的库中名为"Scarlet"的WebSocket,它将你的WebSocket连接注册到生命周期

你可以在这里找到

https://github.com/Tinder/Scarlet

最新更新