How can I prevent applications from running on startup?
How can I stop applications and services from running?
I've installed some applications that I mostly like, except for the fact that they all decided they were too important not to auto-start. None of them give me any option within the application to disable the auto-start "feature."
Can I stop these applications from auto-starting? And if so, how?
Note: My phone is not rooted, so I'm especially interested in solutions that do not require a rooted device, but all answers are welcome, even if they require rooting the device, since I may do this eventually.
Also note: I'd prefer not to fiddle around with clumsy auto-kill features in task-killer programs, as I've found them to be incredibly unreliable on my phone (Motorola Milestone/Droid).
You could kill the apps after they start, but contradicts your question's requisites. Do these apps really create that much overhead? If so, I'd look for alternative apps that don't auto-start.
It's not really an overhead issue, more an issue of bugginess; they seem to run fine interactively but I've seen them inexplicably eat up enormous amounts of CPU and therefore battery in the background. And then there's apps like Google Finance that just have no business whatsoever auto-starting. I do of course look for alternatives but as I'm sure you know, it's not always that easy to find a perfect fit.
That's quite normal behavior for Android. Android manages running applications by firing Intents. Most of the time, you shouldn't need to control/kill apps that automatically runs, Android manages resources smartly, and will kill *and resurrect* applications as necessary to provide as much services as needed given the memory constrain. If a particular app have a disturbing behavior though (e.g. turning on GPS/Wifi all the time and sucking up the battery), simply uninstall them.
I found Android Assistant to be useful to some extent, since it's really not a "preventer" but rather a "killer" (after a tasks start) and also there are some applications/services with which it cannot deal and it asks the user to force close them manually.
Merged http://android.stackexchange.com/questions/2258/apps-automatically-starting#question into this question
Please, please, please, please put down the task killer.
It isn't needed. The operating system knows how to handle and end applications just fine. Otherwise you are going to waste performance/battery because when you kill a task it is going to re-spawn back up. And if you killed a task that was writing to disk (or a database), then you could potentially create corruption.
The only time you ever, ever, ever should kill a task is if it is obviously running wild or hung up (and usually when this happens you get the Force Close screen. If not, go to Settings --> Applications --> find your app and kill the task there).
Frankly, I don't give a damn about (for example) Maps' corruption when it's running automatically after rebooting without ever touching it. It doesn't need to store any data. What is it doing writing to the disk anyway? And indeed, I wouldn't run a task killer that runs automatically (that'd be ironic actually).
There are some apps around that will claim to offer this functionality. However, they are basically task killers under the hood. This means they will allow the app to load, and then kill it. This means that extra battery power is used to kill the app, and then it will probably be reloaded on some event trigger later, only to be killed again.
Honestly, if you use these apps, and don't want to uninstall them, the best thing is to just let them load. They will use a bit of memory, as long as there is some that isn't being used. As soon as something needs the memory, then the system will kill the app - and believe me the Android system has a better idea of which tasks to kill than any dumb task killer.
There is a good description about why task killers are a bad idea here: http://forum.xda-developers.com/showthread.php?p=6426198#post6426198
Otherwise, there is no way to do this on an unrooted phone, unless the app specifically gives an option to disable auto-startup. On a rooted phone, however, there are a range of apps that are able to actually change the way broadcast intents are delivered to apps, meaning they can pre-emptively be prevented from starting.
To be honest I struggle to think of a reason that an app might want to load a service at startup, that it couldn't achieve by just registering a broadcast listener. Services should typically be used for background tasks that have a limited lifetime. Some apps may load a service at startup to do some processing, but will then typically close it once that processing is complete.
However, that said, not all developers understand the rules. I would rather uninstall a badly written app that consumes resources like this.
These are good points, and task killers are probably going to become extinct eventually as the new devices gain processing power and memory. Still, my question isn't born so much out of an anal-retentive concern that the apps are wasting resources, it's born out of *observation* of apps that are too useful to uninstall entirely but *clearly buggy* in their implementation - to the point of literally turning my phone into a mini space heater.
Understood. While the task killer approach will certainly work for apps that ONLY respond to phone startup events, some apps will respond to other events too (e.g. location changes, SMS arrival, email, incoming calls, app install/uninstall etc). For those apps the task-killer will be perpetually re-closing the app everytime it loads. It may be a useful tool in this case, but just keep an eye on it.
'Course I wouldn't have asked the question if I was satisfied with task killers - but it bears mentioning that we are talking specifically about *startup* apps, meaning that the objective isn't to prevent the apps from running at all (otherwise they'd be uninstalled), just to have better control over when they run.
I have updated my answer, hopefully to clarify. I just saw a lot of task-killer being recommended in other answers, knowing that wasn't what you were asking for. I'm quite familiar with the Android source, and basically wanted to say there that unless your phone is rooted then all of the solutions rely on killing the task once it has started.
Android is an OS specifically designed for resource constrained environment. Android manages resources intelligently, and will kill applications when other applications need to use memory, and resurrect them later to restore service. Unlike some other phones, which sacrifices basic smartphone functionality, like multitasking, by only allowing one running application at a time).
As for how Android determine how to resurrect apps, it's mainly determined by Intents. Applications can register to be notified by the OS when certain events occur, e.g. the phone starting up, you're entering a particular location, the wifi gets turned on, etc. When handling notifications (Intents), the application (or parts of it) may get resurrected. In a sense, conceptually in Android, all installed applications are always running all the time and you have conceptually infinite memory. The OS will kill and resurrect applications as needed to maintain this illusion.
You don't really want or need to run a task killer. See: Do I really need to install a task manager?
Apps on the Android are pretty well-behaved. If an app is starting automatically it's because it needs to. Well-designed apps that may or may not really need to run automatically will have an option in their settings to turn that on or off.
Note that unlike your PC, having extra RAM doesn't improve performance so much. It's better for your often used apps to already be in RAM when you launch them, so that they don't need to be loaded. Running with little to no free RAM is a good thing on Android, and the OS does a good job of killing things it doesn't need any more.
hmm the example of application which starts automatically are instant messaging clients, which causes me to go online when I don't want to, and sync clients which i suspects drains the battery a lot.
I'd recommend the application Autostarts.
What it does (citing from the Market description):
Keep control over your phone: See what applications do behind your back.
Shows you what apps run on phone startup, and what other events trigger in the background. Root users can disable unwanted autostarts and speed up their phone boot.
Though not a dedicated app for this purpose, the System Tuner free app has the feature of disabling "startup apps".
You can find that option by scrolling the list of buttons below in the app and select "Apps" then choose the "startups" tab.
This seems to perform things in a much better fashion than other startup managers.
I am not sure if it works exactly like a auto task killer or if it explicitly requires root (other features of system tuner may be the ones demanding root actually)
I doubt you can fix this without rooting the phone. But, if you are ready to root, you can try Autorun manager.