Это довольно старый вопрос, но поскольку я столкнулся с той же проблемой, я хотел поделиться своим решением. В основном, то, что я делаю, это прослушивание исключения SocketTimeoutException
, и если это происходит, я устанавливаю логическое значение isConnected = false
. Как только я снова начну получать статусы, я установил, что boolean вернется к isConnected = true
. Это не самое красивое решение, но оно работает. Здесь мой код для слушателя:
private StatusListener createListener() {
return new StatusListener() {
@Override
public void onStatus(Status tweet) {
if (!isConnected)
isConnected = true;
doSomething(tweet);
}
(...) // Other @Override functions
@Override
public void onException(Exception ex) {
if ((ex instanceof SocketTimeoutException) && isConnected) {
handleConnectionLoss();
isConnected = false;
} else {
System.err.println(ex);
}
}
};
}
@Thank You PeterU –