Насколько я понимаю, IP-адрес изменится. Когда телефон включает WiFi, именно ваш маршрутизатор назначает устройству IP-адрес. Я подозреваю, что Android может перезапускать стек IP (хотя это только предположение), и я не помню, чтобы какой-либо механизм «передачи обслуживания» позволял устройству иметь тот же IP-адрес. Хотя это теоретически возможно, я не уверен, насколько это сложно. :) Кроме того, у Android есть только одна сетевая карта, поэтому он не может сохранить оба IP-адреса. Если он переключается на WiFi, он сохраняет ТОЛЬКО IP-адрес Wi-Fi.
Из моего опыта я заметил, что подобный сценарий потерпит неудачу:
- Android изначально подключен через 3G
- Приложение Android отправляет HTTP GET на веб-сервер
- Android чувствует лучшую WiFi-связь и переключается с 3G
В этом случае запрос GET не выполняется.
Возможные решения:
- Попробуйте несколько раз: 3 раза (или другое магическое число, но в большинстве случаев у меня работало 3) использование try-catch-repeat должно решить большинство проблем.
Используйте код, подобный этому, чтобы проверить подключение к сети и перейти оттуда:
if(!isOnline()) {
Log.e("OFFLINEERROR", "No Network Connectivity");
}
public boolean isOnline() {
try {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo().isConnectedOrConnecting();
} catch(Exception e) {
//Returned a null so no Internet connection!
return false;
}
}
Разделите ваши переводы (таким образом, даже если вы потеряете соединение, вы все равно можете завершить перевод).
Надеюсь, это поможет.