我在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