I want to download some data including json and image(binary data) whenever internet connectivity is available.
I have a full working code which can do that. The problem
Which is the best practice to do so?
Best way is to use IntentService.
Start this service from your BroadcastReceiver. Via IntentService, all requests are handled on a single worker thread -- they may take as long as necessary (and will not block the application's main loop), so no worry about how long your task is.
Is broadcast receiver stays around even when application is not on?
Yes, if they are registered via manifest.
Helpful resources are