A behavour as described above in most cases indicates something's messed up in the system. The most likely candidates here are:
- Application Cache
- Dalvik Cache
As you might have guessed already, different solutions are available for rooted devices -- but only few for non-rooted devices, which cannot directly access the Dalvik Cache. So read on below examples until you hit something working for you, or continue to the very end for all options.
rooted and non-rooted devices: remove obsolete apps
Cause of a slow-down might be some app, hogging all resources. Those apps usually can be identified via the "battery consumption" page in Settings. But even if you cannot find it there, it cannot hurt to remove apps you once installed but no longer need (see e.g. Alix' answer).
You can also disable some system apps you don't need (keyword: bloatware). To do so, go to Settings → Applications, select the "All" tab, and walk the list to find those apps. Tap their entry, and you should find a "disable" button. It might be grayed out: if so, you first have to "force stop" the app, and maybe to "uninstall updates", before the "disable" button becomes accessible. Note however, that this possibility will not exist for all system apps. For rooted devices, there are several tools available allowing you to "freeze" or even remove system apps (be very careful with the latter); one famous example is Titanium Backup.
rooted and non-rooted devices: Clear the Application Cache
If you're lucky, it's simply that: the Application Cache got filled/messed up. This can be easily resolved, even on non-rooted devices:
- With methods available by default on each Android system:
- From your homescreen, go to Settings → Apps → Manage Apps. Make sure to view All Apps, not Downloaded only
- Walk the list, open each app, and hit the Clear Cache button
- Easier method using helper apps: There are several apps available on the Playstore which allow to clean all application's caches at once, so you don't have to walk a long list and do it manually. One example for such an app is 1Tap Cleaner, which also can clean up several other histories like e.g. the browser history
rooted devices: Clear Application Cache and Dalvik Cache
Even more likely for the described case is a messed-up Dalvik Cache -- especially if you tested a lot of apps, permanently installing/uninstalling different ones. So a cleanup of the Dalvik Cache most certainly will solve the situation. As a side effect, it will certainly speed-up things. No negative side-effects are to be expected.
- Via Custom Recovery
This is the most effective way and sure to really do the job. This example is based on the ClockworkMod Recovery, which is most widely spread. It should be equivalent with AmonRa Recovery.
- Boot into recovery mode (how to do this often depends on the device/ROM used. For CyanogenMod users it's most easy: Long-Press the power button, select "Reboot", select "Recovery")
- Using the Volume controls, select Wipe Cache and approve it using the power button. On the next screen, approve the action the same way. This way you easily clear the Application Cache as described above, all at once, without the need of an extra app.
- Go to the Advanced menu, select to Clear Dalvik Cache the same way with the Volume and Power keys and approve it.
- Go back to the main menu, and select Reboot. The next reboot will take longer as usual, so don't worry: Android needs to rebuild the Dalvik Cache, that's completely normal behaviour.
- Helper apps:
Several apps offer options to cleanup the Dalvik Cache (e.g. SystemCleanup and Titanium Backup PRO Key ★ root). You can try those; but I'm not sure if one of them really "wipes" the Dalvik Cache. At least for Titanium Backup I know it only removes remains from uninstalled apps (i.e. obsolete Dalvik files).
rooted and non-rooted devices last resort: Factory Reset
If none of the above does solve your problem, there's always the Factory Reset. Basically, this does all the above (wiping Application Cache and Dalvik Cache) -- but it also wipes the
/data partition. This means: All your settings and data (except those stored on your sd card) as well as all apps you installed yourself are gone. So be sure to have a good backup before doing this (see e.g. Full Backup of non-rooted devices for how to achieve this).
rooted devices: fstrim
Another reason for slowing things down lies in the storage. A little background for understanding:
On the flash memory used in our devices, each cell can only be written so many times. To prevent capacity loss and wear-out, the flash controller applies an algorithm called "wear leveling" to evenly spread writes across the medium. Of course, to prevent data loss you want to write to "empty places" only (except when explicitly overwriting a file). And here comes the culprit: To speed things up, the file system in most cases only marks files deleted, but doesn't tell the controller about the "freed blocks" -- so it becomes inefficient with time.
Android 4.3 addresses this issue with appropriate
fstrim calls, telling the controller once a day which blocks to consider freed. Some ROMs integrated a comparable feature also in earlier versions of Android, mounting file systems with the
discard option (so the controller is informed at once on deletes), but this slows down deletes a little. For devices not having addressed this in either of the two ways, it might be worth to take a look at the Lagfix App, which calls
fstrim in a user-friendly way for selected partitions. Running that once on a long-used device may speed up writes by a factor of up to 30, and even reads get a little faster.