У меня проблема с проверкой интернет-соединения в android во время выполнения. Я использую несколько разных методов для проверки подключения к Интернету, но не знаю, какой из них лучше. потому что у каждого из них есть проблемы.
Метод 1: проверьте подключение к Интернету, отправив запрос на проверку связи с Google:
Runtime runtime = Runtime.getRuntime();
try {
Process mIpAddressProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
int mExitValue = mIpAddressProcess.waitFor();
return mExitValue == 0;
} catch (InterruptedException | IOException ignore) {
ignore.printStackTrace();
}
Метод 2: проверьте подключение к Интернету с помощью ConnectivityManager:
public boolean checkNetwork() {
ConnectivityManager internetManager = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = internetManager.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnected() && networkInfo.isAvailable() && networkInfo.isConnectedOrConnecting());
}
Я использую метод 1 внутри задачи async, но он иногда работает некорректно и замедляет работу приложения, а метод 2 (ConnectivityManager) не проверяет подключение к Интернету, он проверяет только подключение к сети!
handler
вместо _2 _... он работает в отдельном потоке, поэтому пользовательский интерфейс не нарушается ... также вы можете остановить обработчик, если он очень медленный - person rafsanahmad007   schedule 09.01.2017