Перезапустить соединение для передачи данных при остановке?

Иногда соединение для передачи данных моего мобильного телефона останавливается, т. е. все еще выглядит так, как будто у него есть соединение для передачи данных (либо «H», либо «G»), но связь с сервером невозможна.

(В частности, если мое ПЗУ является Cyanogen, значок данных станет серым, что означает, что в данный момент связь с серверами Google невозможна).

Обычно это легко решается путем выключения и повторного включения мобильных данных, что не является ужасной неприятностью, за исключением того, что иногда это зависание остается незамеченным в течение нескольких часов, что подвергает меня риску потери важных сообщений.

  • есть ли простой способ обнаружить это состояние «зависшего соединения»? предпочтительно способ, который можно использовать в Tasker для запуска цикла отключения/включения мобильных данных?

  • есть ли приложение для таких ситуаций? Я нашел много решений, которые, по-видимому, имеют дело с похожей проблемой, т. е. когда соединение для передачи данных полностью потеряно (без значков «H» или «G»), но ни одно из них не касается этой конкретной ситуации.

(Это происходит на рутированном HTC Wildfire S с прошивкой Cyanogen 9, но мой вопрос не относится к нему).

Интересный вопрос, у меня как раз такой же был. Я нашел только приложения, запускающие это в зависимости от качества сигнала; «Забавно» то, что у меня была эта остановка на полном сигнале, так что это не так. Но если вы примете это как обходной путь или что-то, что можно попробовать (включая профиль Tasker), вы легко найдете длинный ответ на странице моего профиля. Следите за моими вопросами о режиме ожидания сотовой связи - не волнуйтесь, я не задал здесь много вопросов :)
Привет, Иззи, это было определенно интересное чтение, и оно дало мне несколько идей :)

Ответы (2)

Вы можете периодически проверять состояние реального соединения с HTTP GETпомощью Tasker . Вы можете снова перезапустить данные с помощью Tasker в случае, если соединение зависло.

Но его недостаток в том, что он быстрее разряжает батарею.

Думаю, я попробую это. Вы предлагаете просто отправить запрос на случайный сервер, например Google? Интересно, какое влияние это окажет на батарею, если проверять это, скажем, каждые 5 минут, учитывая, что мои мобильные данные всегда включены с полной синхронизацией. (Кроме того, это не такая уж большая проблема, учитывая, что я всегда держу его в руках на работе).
@UncleZeiv Да, Google можно доверять. Если нет, проверьте с несколькими хостами. Кстати, я понятия не имею, сколько сока батареи будет расходовать HTTP GET (это зависит от системы). Протестируйте его на своем устройстве. И, если вы всегда держите свое устройство в состоянии зарядки, разрядка аккумулятора не должна быть проблемой.
@UncleZeiv Я предполагаю, что если вы либо полностью синхронизированы, это не должно иметь большого значения, особенно если ваше устройство всегда находится на зарядном устройстве. Если это сработает, подумайте о том, чтобы опубликовать этот профиль Tasker в качестве ответа — безусловно, есть более заинтересованные люди, которые также могут запускать его с другими настройками (например, проверять только все 15 минут), если не постоянно заряжать :) У вас может быть даже два профиля с та же задача, но с другим интервалом, один с «любым подключением питания» и один с тем же, но инвертированным, если вас беспокоит разрядка батареи.

Взгляните на такие приложения, как Connection Checker или Connection State Notifier.

YMMV, кажется, что это работает хорошо для некоторых людей, но не очень для других.

Привет, Sparx, похоже, они решают немного другую проблему, а именно полную потерю соединения для передачи данных или изменение типа соединения. В моем случае я остаюсь на связи, но любой интернет-запрос терпит неудачу. Кроме того, Connection Checker пытается решить проблему, входя и выходя из режима полета, что для меня слишком радикально (требуется повторный ввод пин-кода!), учитывая, что достаточно просто включить и выключить мобильные данные.
Я думаю, что они работают по тому же принципу, который предложил Сачин: пингование сервера по выбору; если нет ответа, то соединение для передачи данных зацикливается. Таким образом, даже если у вас есть подключение для передачи данных (показано как подключенное), но оно не может связаться с сервером, оно должно зациклить соединение. Уведомление, по крайней мере, должно помочь, по крайней мере, сообщив вам, что есть проблема с подключением, поэтому нажатие на виджет для выключения / включения данных (доступных загрузок) должно быть простым делом.