Предположим, у меня есть TCP-соединение, по которому передаются большие объемы данных в моей сети 3G; и я пошел домой, Android автоматически переключился на мой домашний Wi-Fi. Что теперь происходит с существующим подключением? это просто отключение? или он будет работать, только новые соединения будут использовать Wi-Fi?
Вдобавок, что, если я уйду из дома, потеряю сигнал Wi-Fi и переключусь на 3G? Можно с уверенностью предположить, что соединение разорвано. Что касается моего приложения, нужно ли мне обрабатывать повторное подключение, или есть решение с автоматическим откатом?
Заранее благодарим.
Хунбо
Соединение пропадет, потому что ваше устройство будет отображаться с другим IP-адресом, по которому TCP-пакеты находят свой путь.
Откат не будет, если вы его не закодируете, что вам все равно следует делать, если ваше приложение много времени проводит в 3G. Для настольных приложений это нормально, когда они говорят "Ооо!" когда на вашем кабельном или DSL-канале периодически возникают сбои, а соединения 3G постоянно прерываются.
Произойдет то же самое, как если бы вы отключили портативный компьютер от одной сети и подключили к другой. Связи пропадут. Мобильные приложения с гораздо большей вероятностью столкнутся с обрывающимися / неработающими соединениями, поэтому их следует кодировать соответствующим образом. Например, приложения могут регистрироваться для изменения статуса через android.net.ConnectivityManager. В некоторых случаях приложениям может потребоваться выполнить проверку целостности всего, что они загружают, чтобы они не начали пытаться отобразить поврежденный файл. В других случаях было бы плохим тоном загружать определенные виды данных (например, большие файлы), если соединение осуществляется через 3G.