Closed njzhangsan2013 closed 5 years ago
@njzhangsan2013 你的需求应该是要保证在锁屏下保证WebSocket不断连。现在问题应该看你WebSocket在什么时候创建的,以及在长时间锁屏后,是否是系统杀进程了。部分机型出现这种问题,应该是系统内存回收导致的吧,你从这块入手看看,保活处理。或者你试试将这个WebSocket写在service里。然后用rxbus或者eventBus广播试试。
在锁屏断开没有问题,重要的是屏幕再次打开时,能重新自动连接上,这个很重要! 我用这个,我不知道怎么判断websocket是否连接,没有看到isConnect之类的方法,
@Override
protected void onResume() {
super.onResume();
RxWebSocketUtil.getInstance().getWebSocketInfo("ws://")
.compose(RxLifecycle.with(this).<WebSocketInfo>bindToLifecycle())
.subscribe(new WebSocketSubscriber() {
@Override
public void onOpen(@NonNull WebSocket webSocket) {
}
@Override
public void onMessage(@NonNull String text) {
}
@Override
public void onMessage(@NonNull ByteString bytes) {
}
});
}
如上,如果在锁屏状态不需要连接WebSocket,在onResume是注册WebSocket,用bindToLifecycle()管理生命周期。你在试一下。 @njzhangsan2013
试试以上方法,看看是否能解决问题,给我回复一下。 @njzhangsan2013
用的这种方法,请问如何判断当前websocket是否连接正常,如果不正常怎么办,是否重新创建 RxWebSocketUtil.getInstance().getWebSocketInfo(Constant.SOCKET_URL) .compose(RxLifecycle.with(this).bindOnDestroy())
.subscribe(new WebSocketSubscriber()