Google Maps is known for situations like this for years. It doesn't happen all the time and on all devices simultaneously with all versions of maps, but comes often enough. For me, the decision was to disable/freeze Google Maps, and use other Map apps (Locus Map, OruxMaps) instead. But let's go into details how an app (in your case Google Maps) can be "put on ice":
On a rooted device
A rooted device gives you the most alternatives. Say you want to use the app from time to time, you could use the following approach:
Dynamic freeze
- convert Google Maps from system-app to user-app. This can be done e.g. with Titanium Backup – and is of course not necessary if Maps didn't ship with your device (but was explicitly installed by yourself, which already makes it a "user-app")
- Greenify Maps. This way the app is kept from running unless you explicitly start it. You could think of this as a "dynamic freeze"
Static freeze
If you do not need the app anyway, and rather use another replacement, you can freeze it permanently. A freeze marks an app as being "unavailable", so it can no longer be started. There are multiple apps which can handle this, as e.g. before mentioned Titanium Backup or App Quarantine. Using Titanium Backup would give you an advantage here: TiBu let's you place a shortcut on your homescreen to freeze/unfreeze-start an app, basically emulating the "dynamic freeze" described above. No need to convert the app into an user-app for this.
Disabling Auto-Start on certain events
Many apps register so-called "broadcast receivers" to be notified on system events they are interested in. The best known certainly is boot_completed
for apps that want to become active right after the device has booted up – but there are a lot more. Examples include the change of network status (true for our Google Maps candidate), battery-low, or the SDCard being mounted. On a rooted device, you can disable those "listeners" with so-called "Autostart managers". One of the best is Autorun Manager in its Pro-Version. If using those, take care to not disable too much, as that might render an app unusable.
Without root
Without root, I know of only one way to achieve something comparable:
- Go to Settings→Apps
- Select the "All" tab
- Scroll to the app in question (here: Google Maps), and tap its entry
- If you don't see a "Disable" button, but "uninstall updates" instead, it's a system app. Tap "uninstall updates", then "force stop".
- Tap the "Disable" button
Now the app is de-activated, and should no longer run. I explicitly made "should" in italics, as to my experience often this is only a partial working solution: though the app is removed from the drawer, it seems it's still not completely out-of-reach for certain frameworks.
Pros and Cons
- Disable: Only available solution if your device is not rooted.
- Pro: does not require root
- Cons:
- app not always completely disabled
- no dynamics
- requires multiple "taps"
- requires to always uninstall updates first (if there are any)
- not applyable to all apps (manufacturer/carrier can "lock" apps against this)
- Static Freeze:
- Pros:
- Works on all apps
- Partly dynamic (using TiBu and its "shortcuts" on your homescreen)
- Con: Requires root
- Dynamic Freeze:
- Pros:
- Dynamic
- app icons remain in the drawer/on your home screens (so from the user's perspective, handling remains unchanged)
- Cons:
- requires root
- doesn't work on system apps (though there are "experimental features" for this AFAIK).