Bind service to FragmentActivity or Fragment?

Is it better to bind service to FragmentActivity:

bindService(Intent, ServiceConnection, int);

or to Fragment:

  • Android:How to download the File from the server and save it in specific folder in sdcard
  • Android Studio: sound notification on build success
  • Should I remove e.printStackTrace() from my code before publishing
  • How to Automatically Modify versionName in Manifest during Build?
  • Android back button behaviour
  • Compile and use boost for Android NDK R10e
  • getActivity().bindService(Intent, ServiceConnection, int);

    What is better practice?

  • How to detect when user turn on/off gps state?
  • Where is API call to do “lights out mode” in honeycomb?
  • get array of KEYS for each element under jsonarray
  • Customizing ActionBar Tabs on Android 4
  • How to link to Android Market app
  • store and retrieve a class object in shared preference
  • One Solution collect form web for “Bind service to FragmentActivity or Fragment?”

    Is it better to bind service to FragmentActivity… or to Fragment

    They are the same as you have them written here. getActivity() is not a Fragment — it is a method that returns the Activity. You cannot call bindService() on a Fragment.

    What is better practice?

    Neither. Bind to the Application object, obtained via getApplicationContext(), with the ServiceConnection managed by (or perhaps actually being) a retained Fragment.

    The reason is configuration changes. A binding is state. You need to maintain that state across configuration changes. While a retained Fragment can hold onto the ServiceConnection, there is an implicit tie in the system between the ServiceConnection and the Context that registered it for a binding. Since activities can be destroyed and recreated on configuration changes, the Activity is not a good choice of Context here. Application, which is system-global, is a safer choice, and one of the few places where choosing Application over another Context is a wise move IMHO.

    Here is a blog post of mine, from a time before fragments, that gets into this a bit more. Here is a sample project demonstrating the technique.

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.