Networking is a really important part of building dynamic applications. When it ccomes to loading data from the internet and displaying in the app, we can do it with three most probable methods. One can be loading data directly on the UI thread(this is a quite bad practice to load data on the app and I guess we have all moved beyond loading data on the UI thread), one can be using Async Loader class which does the networking part on a different background thread. So this method of using the Async Task class comes in quite handy for our cause since it performs the action of loading data from the internet by creating a new background thread and doesn’t quite alter the working of the main UI thread, but this method also has some drawbacks which might alter the working of the application and causing it to crash. By default the device configuration changes such as rotating your whole activity(one of the main reasons it is quite critical not to keep a reference to your activity or any views). So here the Loaders comes to the rescue. The best part about Loaders is that it survives configuration changes i.e. the similar data is not loaded again and again on the change of configuration. The once loaded data is still there when the activity comes back up. Data is queued up for deliivery so you aren’t going to lose data during device configurtion changes. One more advantage of using a Loader is that it does not stays around forever. It gets automatically cleaned up when the requesting activity or the fragment is permanently destroyed. That means no lingering, unneccessary loads which is not the case of using AsynTask class.