Image loading seems like an easy task at the first glance but as every task, it has its' own caveats. First of all, you probably want to do this asynchronously because you don't want to flood your main thread with that kind of tasks. Then, you want to cache images so you don't load them every time your activity of fragment resumes. You need to handle error cases when the network is not available or server is sending you garbage or doesn't send anything at all. If you don't do this it will definitely harm the user-experience. After all, you probably need to do some pre-processing steps before showing the image to the user such as cropping, resizing, reversing etc. Also, it would be convenient to have an easy way to set an image in an ImageView. You may ask: "Why do you think that you know what I need and want?". The answer is that you're not alone. Android developers already made tons of apps that use pictures from the network. And what happens when man...