Коротко — причин может быть несколько, но по описанию чаще всего это не «недостаток CPU», а поведение Android / OEM‑скаина: фоновые ограничения, Doze / App‑standby, foreground‑service/уведомления или конфликты с VPN/сетевыми настройками в Android 14. Ниже — список конкретных проверок и шагов диагностики + возможные решения.
Что проверить в первую очередь
- Версия Orbot и способ установки (Play Store / F‑Droid). Обновите до последней.
- В Orbot: включён ли режим «foreground service» (постоянное уведомление)? Если нет — включите.
- В Android: в настройках приложений для Orbot и для вашего приложения:
- Разрешить «Фоновая активность» / «Разрешить работу в фоне».
- Отключить все «оптимизации батареи» (вы уже сделали, но проверьте ещё раз и для системных оптимизаций).
- Отключить «Спящий режим приложений / Hibernation / Put to sleep» у OEM‑настроек.
- Разрешить автозапуск, если есть такая опция у производителя (Xiaomi, OnePlus, Samsung и т. п. имеют свои убийцы процессов).
- Developer options:
- «Don't keep activities» — выключено.
- Background process limit — Normal.
- Проверьте системные режимы энергосбережения (Battery Saver, Adaptive Battery) и отключите их на время теста.
Диагностика (полезнее всего — логи)
- В Orbot включите verbose/debug логи и посмотрите журнал при обрыве (Orbot → Logs).
- Если есть возможность, подключите телефон к компьютеру и сделайте adb logcat:
- adb logcat | grep -i -E "orbot|vpn|VpnService|ConnectivityService|killed|stop|socket|socks|tor"
- Ищите строки вида «Stopping service», «Killed», «VpnService: prepare/stop», ошибки сокетов (bind/accept/closed).
- Посмотрите логи вашего приложения — получает ли оно ошибку «connection reset» или «socket closed» в момент разрыва.
Проверки сети и конфигурации
- Попробуйте переключиться на мобильные данные (LTE/5G). Если проблема исчезнет — виноват Wi‑Fi/AP или его энергосбережение.
- Отключите Wi‑Fi power saving / Wi‑Fi optimization в настройках роутера/телефона (если есть).
- Попробуйте сменить port/localhost варианты: 127.0.0.1 vs localhost vs ::1 (иногда нюансы IPv6 влияют).
- Убедитесь, что и Orbot, и приложение используют один и тот же адрес/порт и что приложение действительно подключается к localhost на том же устройстве.
- Проверьте, нет ли одновременно включённого другого VPN/файрвола, который может конфликтовать (Android позволяет только один VpnService).
Возможные причины и как с ними бороться
- Агрессивный OEM‑киллер процессов (Xiaomi, Oppo, OnePlus и т. п.): в настройках «автозапуска», «спящего режима» дайте исключение.
- Android 14 ужесточил правила фоновой работы и уведомлений foreground‑services: нуждается в постоянном уведомлении и разрешениях на фоновую работу. Убедитесь, что Orbot работает как foreground service.
- App‑Standby / Doze: даже при выключенной оптимизации батареи некоторые фоновые сетевые ограничения применяются. Попробуйте временно включить экран, держать приложение открытым и посмотреть, пропадёт ли проблема.
- Конфликт VPN API: если приложение тоже использует VpnService или есть служба, претендующая на VPN, она может периодически пересоздавать туннель и обрывать локальные прокси.
- Локальные сокеты и loopback: Android бывает капризен с межпроцессным доступом к localhost между разными UID/песочницами — но если всё работало раньше на другм устройстве, это менее вероятно.
- MTU/пакеты/переадресация: реже — сетевой стек AP или роутера обрывает долгоживущие TCP‑сессии (keepalive решает). Если возможно, включите TCP keepalive в приложении.
Практические шаги, которые я рекомендую сделать сейчас
1. Включите debug‑логи в Orbot и ловите логи в момент разрыва (Orbot Logs + adb logcat). Скиньте сюда (или в личку) ключевые строки — помогу расшифровать.
2. Попробуйте на время:
- Переключиться на мобильную сеть;
- Оставить Orbot в активном окне (чтобы исключить фоновые ограничения).
3. Проверьте и отключите все OEM‑опции «optimize», «sleep», «auto‑kill».
4. Если проблема остаётся и логов мало, попробуйте использовать другой способ — включить в Orbot VPN/transparent mode, чтобы приложение не зависело от локального SOCKS (иногда это стабильнее).
5. Уточните: модель телефона и оболочка (например, Samsung OneUI, Xiaomi MIUI и т. п.), версия Orbot, и смотрите, повторяется ли поведение после перезагрузки.
Если пришлёте логи или модель телефона — подскажу более конкретно.