@Override public void onTimer() { if (NetworkManager.getInstance().getState() != NetworkState.suspended) { Collection<ConnectionItem> reconnect = new ArrayList<ConnectionItem>(); for (ConnectionThread connectionThread : managedConnections) if (connectionThread.getConnectionItem().getState().isConnected() // XMPPConnection can`t be null here && !connectionThread.getXMPPConnection().isAlive()) { LogManager.i(connectionThread.getConnectionItem(), "forceReconnect on checkAlive"); reconnect.add(connectionThread.getConnectionItem()); } for (ConnectionItem connection : reconnect) connection.forceReconnect(); } long now = new Date().getTime(); Iterator<NestedMap.Entry<RequestHolder>> iterator = requests.iterator(); while (iterator.hasNext()) { NestedMap.Entry<RequestHolder> entry = iterator.next(); if (entry.getValue().isExpired(now)) { entry.getValue().getListener().onTimeout(entry.getFirst(), entry.getSecond()); iterator.remove(); } } }