247 Contributors: 6 Sunday, April 2, 2017
Licensed under: CC-BY-SA
Not affiliated with Stack Overflow
Rip Tutorial:
Roadmap: roadmap



Loader is good choice for prevent memory leak if you want to load data in background when oncreate method is called. For example when we execute Asynctask in oncreate method and we rotate the screen so the activity will recreate which will execute another AsyncTask again, so probably two Asyntask running in parallel together rather than like loader which will continue the background process we executed before.


LoaderManagerAn abstract class associated with an Activity or Fragment for managing one or more Loader instances.
LoaderManager.LoaderCallbacksA callback interface for a client to interact with the LoaderManager.
LoaderAn abstract class that performs asynchronous loading of data.
AsyncTaskLoaderAbstract loader that provides an AsyncTask to do the work.
CursorLoaderA subclass of AsyncTaskLoader that queries the ContentResolver and returns a Cursor.


Introduced in Android 3.0, loaders make it easy to asynchronously load data in an activity or fragment. Loaders have these characteristics:

  • They are available to every Activity and Fragment.
  • They provide asynchronous loading of data.
  • They monitor the source of their data and deliver new results when the content changes.
  • They automatically reconnect to the last loader's cursor when being recreated after a configuration change. Thus, they don't need to re-query their data.

When not to use Loaders

You shouldn’t use Loaders if you need the background tasks to complete. Android destroys Loaders together with the Activities/Fragments they belong to. If you want to do some tasks, that have to run until completion, do not use Loaders. You should use services for this kind of stuff instead.

Related Examples