Question: I have an application that has a single activity that hosts several fragments in a sort of custom navigation drawer design. Two of these fragments depend on a service to return them json information to display. 
I want to be able to start the service on my splash screen to load the data I need then asynchronously communicate the json to these fragments.

I am new to android and programming in general so excuse me if my actions were ill informed but I first tried to register the fragments as receivers and then simply broadcast intents containing the json information in a bundle. This seemed to not work because sometimes the fragments would not be running when the service would broadcast the intent and miss the intent. 

Then I decided to go with sticky intents but this resulted in stale information not to mention the inherit security concern. 

What is the best way to have a service perform a background network request upon launching the app and then display the returned information later by any activity or fragment?

Answer: 
You could call startService() not only from your splash screen, but from your fragments: `getActivity().startService()`.

Derive your service from [Service](http://developer.android.com/reference/android/app/Service.html) (not from IntentService). In the `onStartCommand()` it will read data from network, then broadcast the result. If result already loaded, service could simply broadcast the result.

When you call `startService()` from your splashscreen, service loads data from network and broadcast it to fragments that are shown at the moment. When new fragment created, it calls `startService()` again and service broadcasts cached data.

Another approach is [bindService](http://developer.android.com/reference/android/content/Context.html#bindService(android.content.Intent,%20android.content.ServiceConnection,%20int)). Your fragment could bind to service on `onCreate()` and unbind from it on `onDestroy()`. In this case fragment could call service's methods directly.
Use event bus instead of broadcasting intents, like [Green Robot EventBus](https://github.com/greenrobot/EventBus) (also supports sticky broadcasts)