Disable Battery Optimization on Android for iProxy & OpenVPN

Proxy Farming
Ilya Rusalowski
Ilya Rusalowski

Key Takeaway: To disable battery optimization on Android for an iProxy node, mark both the iProxy app and OpenVPN for Android as Unrestricted (Android 12+) or Don’t optimize (Android 9–11) in the OS battery settings. The exact menu path differs across Android versions; this guide covers the per-version flow for 9 through 16.

What you’ll do

Mark two apps as Unrestricted (or Don’t optimize, on older Android) in the OS-level battery settings of every phone in your Android proxy fleet :

  • iProxycom.iproxy.android
  • OpenVPN for Androidde.blinkt.openvpn (the open-source ics-openvpn client)

Without this, Android treats both apps as ordinary background processes and applies progressively harsher restrictions: Doze deferral, App Standby Bucket demotion, foreground-service throttling, and eventually killing the persistent notification on aggressive OEM skins. The symptom is silent disconnects, dead SIM banks, and dropped tunnels that look like proxy bugs but are actually OS battery management doing what it was designed to do.

The fix is per-app, per-phone, one-time. About two minutes per device once you know where the screen lives. If you operate a proxy farm at any scale, doing this on day one of provisioning is far cheaper than chasing flaky uptime later. See connection settings for stable proxy operation for the full operator hygiene checklist.

Tired of week-2 silent proxy disconnects?
iProxy.online turns one Android phone into a managed mobile proxy and surfaces uptime, sessions, and IP rotation in one dashboard, so you spot a dropped tunnel before your customer does.
Start free 48-hour trial

Jump to your version

⚠️ Do this for both apps, iProxy AND OpenVPN, or it’s pointless. Why?

Version Section
Android 16 Android 16: same hidden submenu as Android 15
Android 15 Android 15: the hidden submenu trap
Android 14 Android 13–14: clean radio screen
Android 13 Android 13–14: clean radio screen
Android 12 Android 12: clean radios with earlier title
Android 11 Android 9–11: the split-UI era
Android 10 Android 9–11: the split-UI era
Android 9 Android 9–11: the split-UI era

The screen has been redesigned three times across this range, so the steps differ. Find your version, follow the three steps, repeat for OpenVPN.

Note on phone choice: the Android version is mostly outside your control on a phone already in service, but if you’re still picking devices, our list of recommended Android phones for iProxy flags models that get long OS support and have predictable battery menus. The recommended devices page on iProxy.online tracks current availability.

Android 16: same hidden submenu as Android 15

Android 16 keeps the Android 15 per-app battery UI for this setting. The top page still shows the Allow background usage row and the Restricted radio, while Unrestricted lives one screen deeper.

How:

  1. Settings → Apps → All apps → iProxy → App battery usage
  2. Tap the row label “Allow background usage” — not the toggle on its right side.
  3. On the sub-screen that opens, pick Unrestricted. Back out.

Repeat for OpenVPN for Android. The tap target and final sub-screen match the Android 15 screenshots below.

Android 15: the hidden submenu trap

Android 15 introduced the hidden submenu trap, and Android 16 keeps it. The top page shows an Allow background usage toggle and a Restricted radio. Most operators glance at the toggle, see it’s already on, and back out. That state is “Optimized”, not “Unrestricted”. Unrestricted is hidden one screen deeper.

How:

  1. Settings → Apps → All apps → iProxy → App battery usage

  2. Tap the row label “Allow background usage”not the toggle on its right side. Tapping the toggle just flips between Restricted and not-Restricted; it never reaches Unrestricted. The whole row is the tap target:

    Tap target on Android 15: the row label "Allow background usage", not the toggle
  3. On the sub-screen that opens, pick Unrestricted. Back out:

    Android 15 sub-screen with Unrestricted selected

The trap, in one line: if the screen you’re on shows a toggle and one radio, you’re on the top page and the app is on Optimized. If you see two radios (Unrestricted / Optimized), you’re on the right page.

Repeat for OpenVPN for Android.

Why Android 15 buried it

Google’s stated rationale is that most consumer apps don’t need Unrestricted, so the option was moved one level deeper to discourage casual whitelisting. For an unattended 24/7 proxy node that is exactly the use case the OS is trying to discourage, so the extra tap is unavoidable.

Android 13–14: clean radio screen

The cleanest screen in the supported range. Three radios on one page, one tap.

How:

  1. Settings → Apps → All apps → iProxy → App battery usage
  2. Pick Unrestricted.
  3. Back out.
Android 13 App battery usage with Unrestricted selected

Repeat for OpenVPN for Android.

(Android 14 uses the exact same screen and wording.)

Android 12: clean radios with earlier title

Same three-radio layout as Android 13, with one cosmetic difference: the row inside App info is labeled Battery rather than App battery usage, and the page title says Battery.

How:

  1. Settings → Apps → All apps → iProxy → Battery
  2. Pick Unrestricted.
  3. Back out.
Android 12 Battery screen with Unrestricted selected

Repeat for OpenVPN.

Android 9–11: the split-UI era

On Android 9, 10, and 11 the per-app battery screen is split: there’s a Background restriction toggle (leave OFF) plus a Battery optimization sub-screen with a list of every installed app and an Optimize / Don’t optimize dialog. The dialog is where the actual setting lives.

How:

  1. Settings → Apps & notifications → See all apps → iProxy → Advanced → Battery → Battery optimization

  2. The list defaults to “Not optimized”. Tap the spinner at the top of the list and switch to All apps. Then find iProxy:

    • Android 11 / 10: tap the magnifier icon, type iproxy, pick the row.
    • Android 9: no search button. The list is alphabetical, so scroll to i and tap iProxy.
  3. In the dialog that opens, pick Don’t optimize and confirm with Done:

    Android 10 Optimize / Don't optimize dialog with Don't optimize selected

    On Android 9 the dialog looks identical:

    Android 9 Optimize / Don't optimize dialog with Don't optimize selected

Repeat for OpenVPN for Android.

A9 gotcha: the Battery optimization list scrolls fast and overshoots easily on a touchscreen. If the dialog opens for the wrong app, tap CANCEL and scroll back. There is no search shortcut on this version.

Verify it stuck

After both apps are set:

  1. Reboot the phone.
  2. Re-open the per-app battery screen for both iProxy and OpenVPN.
  3. Confirm the choice is still Unrestricted (Android 12+) or Don’t optimize (Android 9–11).

The setting normally survives reboots and routine app updates. Two situations where it can revert:

  • Major OEM skin updates. Xiaomi MIUI/HyperOS and Samsung OneUI have both been observed to reset per-app battery exemptions on system updates. After every OTA, re-check both apps.
  • The app was force-stopped through Settings. On Android 15+, Android’s stopped-state behavior keeps the app stopped until direct or indirect user action and cancels pending intents while it is stopped. Don’t tap Force stop on a production phone; if it has been tapped, launch the app again, then re-check that Unrestricted is still selected.

If the setting reverts on a stock-Android skin (Pixel, recent Motorola, Sony) without a force-stop and without a major OS update, that’s worth investigating: it isn’t expected stock behavior.

What this fixes, what it doesn’t

Fixes:

  • Doze deferral of network and CPU work for both apps when the phone is idle.
  • App Standby Bucket demotion into rare or restricted, which throttles jobs, alarms, and (in restricted) network access.
  • Per-app Battery Saver throttling when global Battery Saver is active.
  • Foreground-service restrictions tied to bucket state, including the Android 13 BOOT_COMPLETED suppression for apps the user has placed in restricted background usage.

Does not fix:

  • OEM-specific kill mechanisms. Xiaomi autostart, MIUI/HyperOS battery saver, Samsung OneUI Sleeping/Deep Sleep apps, Huawei EMUI protected app status, Realme/Oppo ColorOS keep-alive. Those are separate per-vendor screens, layered on top of stock Android battery management. Even with both apps on Unrestricted, an OEM skin can still kill them. The community-maintained dontkillmyapp.com tracks the worst offenders and the per-OEM mitigations, and our 4G proxy network setup guide walks through the broader fleet hygiene that keeps OEM-skin pain to a minimum.
  • Global Battery Saver mode. This guide adjusts per-app behavior. Battery Saver, when active globally, can override the per-app exemption on most phones. For plugged-in proxy nodes, disable global Battery Saver entirely. It should never trigger anyway, since the phone is on mains power.
  • Wi-Fi sleep policy. Some phones disconnect Wi-Fi when the screen is off. The proxy then has no link. Settings → Wi-Fi → Advanced → Keep Wi-Fi on during sleep → Always.
  • Battery longevity itself. The OS settings here keep the apps alive; they don’t slow down battery cell aging on a plugged-in 24/7 phone. The chemistry side, including the 80% state-of-charge knee, calendar aging at high SoC, and smart-plug cycled charging, is a separate topic, covered in our mobile proxy phone battery longevity guide — the pillar article this guide sits under.
Don’t want to babysit a phone fleet?
Run iProxy.online on Android, manage IP rotation and session rules from the web dashboard or Telegram bot, and test it on real workloads with a free 2-day trial. No card needed.
Create your mobile proxy

Cheat sheet

Print or screenshot this and tape it to the rack:

Android Path Final action
16 Apps → iProxy → App battery usage → tap row label Pick Unrestricted in the sub-screen
15 Apps → iProxy → App battery usage → tap row label Pick Unrestricted in the sub-screen
14 Apps → iProxy → App battery usage Pick Unrestricted
13 Apps → iProxy → App battery usage Pick Unrestricted
12 Apps → iProxy → Battery Pick Unrestricted
11 Apps & notifications → iProxy → Advanced → Battery → Battery optimization Spinner → All apps → search → iProxy → Don’t optimize
10 Apps & notifications → iProxy → Advanced → Battery → Battery optimization Spinner → All apps → search → iProxy → Don’t optimize
9 Apps & notifications → iProxy → Advanced → Battery → Battery optimization Spinner → All apps → scroll to iProxy → Don’t optimize

Why you have to do this for both apps

A typical iProxy node sits behind an OpenVPN tunnel. The data path is:

mobile network ↔ Android OS ↔ OpenVPN tunnel ↔ iProxy daemon ↔ remote client

Both processes have to stay alive 24/7 for the proxy to be reachable. Android’s battery management treats each one independently. Setting iProxy to Unrestricted while leaving OpenVPN on Optimized achieves nothing — after a few days of no user interaction, the OS will demote the tunnel into the restricted standby bucket, throttle its alarms, and eventually kill its foreground service. iProxy stays running but has nothing to forward traffic over.

This is the most common cause of “iProxy uptime degraded after a week” support tickets that turn out not to be iProxy bugs at all. The proxy app is fine. The tunnel underneath isn’t.

Frequently Asked Questions

What's the difference between 'Don't optimize' and 'Unrestricted' on Android?
They are the same end state under different naming. Android 9–11 used a binary Optimize / Don’t optimize dialog. Android 12 introduced a three-way radio (Unrestricted / Optimized / Restricted), and ‘Unrestricted’ is the new label for the old ‘Don’t optimize’ state. Both fully exempt the app from Doze and App Standby Bucket throttling.
Why does Android keep killing OpenVPN in the background even after I disable battery optimization?
Stock Android battery optimization is one of two layers. The other is OEM-specific aggressive battery management: Xiaomi/HyperOS autostart, Samsung OneUI Sleeping apps, Huawei EMUI protected apps, Oppo/Realme ColorOS keep-alive. These are separate Settings screens, layered on top of stock behavior. Even with the app set to Unrestricted, the OEM skin can still kill it. The community reference at dontkillmyapp.com tracks the per-vendor mitigations.
Does the Unrestricted setting survive an Android system update?
On stock Android (Pixel, recent Motorola, Sony) it normally survives reboots, app updates, and minor OS updates. Major OEM skin updates can silently reset it: Xiaomi MIUI/HyperOS and Samsung OneUI have both been observed to reset per-app battery exemptions on system updates. Re-check both apps after every major OTA.
Will marking the iProxy and OpenVPN apps as Unrestricted drain my phone's battery?
On a plugged-in 24/7 proxy phone, the practical answer is no. Battery aging on a phone you keep on mains power is dominated by calendar aging at high state-of-charge, not by background CPU. Setting the apps to Unrestricted mainly removes scheduling deferrals; the apps were going to wake up anyway when traffic arrives. On a battery-only consumer phone, the impact is small but non-zero.
Do I need to disable Adaptive Battery as well as battery optimization?
Per-app Unrestricted is the dominant signal: it overrides Adaptive Battery’s bucket suggestions for that specific app. Globally disabling Adaptive Battery is not required for proxy uptime and is not recommended on a phone you actually use. For unattended fleet phones, you can switch it off as a belt-and-braces measure, but the Unrestricted toggle is what does the heavy lifting.