2013-11-26 3 views
0

Мое приложение использует HttpURLConnection для загрузки данных из сети, поэтому оно запрашивает разрешение INTERNET.Должен ли я проверять состояние сети перед выполнением сетевых операций?

Должен ли я также проверить, если устройство подключено к сети (через ConnectivityManager и NetworkInfo), таким образом, добавляя ACCESS_NETWORK_STATE к запрошенному разрешению, или я должен просто попытаться загрузить данные и обработать исключение?

Руководство Google Connecting to the Network и Managing Network Usage рекомендует разработчику проверить состояние сети, прежде чем пытаться выполнять сетевые операции для «лучшего пользовательского опыта», но я помню, как читал учебник (которого я не могу найти в данный момент), говорящий просить только о действительно неизбежных разрешениях, чтобы не пугать пользователей и улучшить «самоконтроль».

Так,

  • Есть ли какой-то лучшей практики в отношении этого?
  • Есть ли какие-либо проблемы, когда вы не просите разрешения и не обрабатываете исключение?
+0

Мое мнение состоит в том, что вы должны добавить дополнительное разрешение, если хотите * сделать что-то, когда оно изменится, или если вы хотите * изменить * что-то в зависимости от состояния. Например, если вы хотите отключить функцию, когда сеть отсутствует (вместо уведомления при попытке). В противном случае это просто дополнительное разрешение «напугать» людей, как вы сказали. Просто мое мнение, и я уверен, что другие могут отличаться. – Geobits

ответ

1

Даже если вы проверяете наличие сети перед выполнением вызовов к удаленным службам, вам все равно необходимо обработать подключение к делу в ходе разговора. Загрузка нескольких сотен kB через 2G занимает всего несколько секунд, и вы можете быть отключены в любое время (пользователь может даже прервать вас, перейдя в режим полета).

Просто сделайте это приятным для пользователя. Покажите им ошибки неинтрузивным образом.

Смежные вопросы