Сегодня трудно себе представить какое-либо программное обеспечение не взаимодействующее с глобальной сетью. Платформа Android не стала исключением, но перед обращением в сеть правилом “хорошего тона” является проверка наличия соединения, во избежание зависаний и глюков приложения.
Существует лишь малая часть, скорее даже бесконечно малая часть, android приложений, которые не используют возможности сети и связь с “внешним миром” в своей работе. Даже самые простые игрули используют сеть для отправки данных, например, для создания таблицы рекордов или банально для загрузки рекламы, отображаемой в приложении. Поэтому, практически каждый разработчик сталкивался с необходимостью проверки наличия подключения к сети, поскольку её отсутствие может вызывать фатальные ошибки приложения, пытающегося загрузить или отправить какие-либо данные. Проверить наличие подключения к сети очень легко, но надо понимать, что подключение к сети может быть активно, но самого Интернета может и не быть – тут, разве что, только отлавливать эксцепшены (exception (англ.) – исключение) и не давать им “рушить” всё приложение.
Я проверяю подключение следующей функцией
public Boolean internetAvailable() {
ConnectivityManager connectManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
boolean internetAvailable = (connectManager.getNetworkInfo(
ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED || connectManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED);
return internetAvailable;
}
Эта функция очень удобна в использовании, поскольку она возвращает значение логического типа, что позволяет Вам делать следующие, лёгкие в понимании, конструкции вида:
if(internetAvailable()) {
// Интернет есть
} else {
// Интернета нет
}
Использование таких конструкций при написании кода – делает его гораздо более удобным для восприятия человеку. Таким образом, Ваш код легче читается и понимается другими людьми.
Пишите хороший код, удачи!