Я пытаюсь найти стратегию для своего приложения, где мне нужно выполнить различные сетевые операции. Мой вопрос заключается в том, является ли вызов ConnectivityManager.getActiveNetworkInfo()
продолжительным и разряженным батареей, и можно ли его часто звонить, или мне нужно оптимизировать производительность моего приложения, применяя еще одну стратегию? Заранее спасибо.Является ли ConnectivityManager.getActiveNetworkInfo() дорогого вызова?
ответ
Я использовал ConnectivityManager.getActiveNetworkInfo() в трех приложениях. Вы можете использовать метод checkNetwork() и вызвать его, чтобы убедиться, что вы находитесь в правильном состоянии каждый раз, когда пользователь запускает что-то, что нуждается в сети, чтобы он или она могли исправить ситуацию. Кроме того, ваша обработка ошибок может сочетать вызовы sleep() с проверками сети и управлением соединениями. Это означает использование разрешений на 30 газиллионов. Но это был бы разумный способ сделать это.
Спасибо за ваш ответ. На самом деле, я подумал о реализации этого с помощью BroadcastReceiver, чтобы поймать широковещательные сообщения, связанные с подключением, и сохранить состояние в переменной, а затем просто проверить его, когда мне нужно. Это немного больше, потому что мое приложение состоит из нескольких Актив, и мне нужно знать, когда регистрировать и отменить регистрацию BroadcastReceiver. Вот почему я хотел знать, подходит ли метод, который я описал, так часто, как требуется. – Egor
Ваша идея может быть лучше моей. Если ваши сетевые потребности запускаются пользователем, например, при загрузке файла, когда он нажимает кнопку, у меня все в порядке. Если ваше использование тяжелее, я думаю, что у вас есть лучшая идея. –
Эй, вы получили ответ, если это дорогой звонок или нет? Если да, то как дорого w.r.t. результаты кэширования с использованием широковещательного приемника? – q126y