My Android приложение (мин. API 24, целевой API 27, Java 8) использует Apache FTPClient
.
Все длительные операции, такие как вход в систему, загрузка, загрузка, ... запустить doInBackground
из AsyncTask
(он даже выдает исключение, если вы попытаетесь запустить его в главном потоке), и все BufferedReader
s, ... закрываются в соответствии с предложением finally
в пределах.
onPostExecute
возвращает сообщения об ошибках, ... используя поддельный обработчик завершения, и в настоящее время он также заботится об отключении от FTP-сервера, вызывая этот код:
private void logout() {
if(ftpClient!=null && ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException e) {
//No point
}
}
}
I проверил javado c, но нет никакого упоминания о потоке для disconnect()
, и даже там не всегда вызывается из finally
.
Вопрос: Есть disconnect()
даже может зависнуть, например, connect()
(например, если вы даете ему неверный IP-адрес), и можно ли запустить его в главном потоке (= onPostExecute
)?