¿Vincular servicio a FragmentActivity o Fragment?

¿Es mejor enlazar servicio a FragmentActivity ?

 bindService(Intent, ServiceConnection, int); 

O al Fragment :

 getActivity().bindService(Intent, ServiceConnection, int); 

¿Qué es una mejor práctica?

¿Es mejor enlazar servicio a FragmentActivity … o al FragmentActivity?

Son los mismos que los han escrito aquí. getActivity() no es un Fragment – es un método que devuelve la Activity . No se puede llamar a bindService() en un Fragment .

¿Qué es una mejor práctica?

Ninguno. Vincular al objeto Application , obtenido a través de getApplicationContext() , con la ServiceConnection administrada por (o tal vez realmente) un Fragment retenido.

La razón es cambios de configuración. Una vinculación es estado. Debe mantener ese estado en todos los cambios de configuración. Mientras un Fragment retenido puede mantenerse en ServiceConnection , hay un vínculo implícito en el sistema entre ServiceConnection y el Context que lo registró para un enlace. Dado que las actividades pueden ser destruidas y recreadas en los cambios de configuración, la Activity no es una buena opción de Context aquí. Application , que es sistema global, es una opción más segura, y uno de los pocos lugares donde la elección de la Application sobre otro Context es un movimiento inteligente IMHO.

Aquí hay un blog de la mía, de un tiempo antes de los fragmentos, que se mete en esto un poco más. Aquí hay un ejemplo de proyecto que demuestra la técnica.

  • Android Descargar varios archivos y mostrar el progreso en ListView
  • Java.lang.NullPointerException: Intenta invocar el método virtual 'int android.view.View.getImportantForAccessibility ()' en una referencia de objeto nulo
  • ListView vacía después de volver al fragmento
  • ViewPager en blanco en la parte posterior de otro fragmento
  • Después de que el fragmento de cambio de configuración de backstack ahora está compartiendo el FrameLayout?
  • Configuración regional: onConfigurationChanged not called
  • ¿Por qué se crea un FrameLayout extra para fragmentos?
  • Actualizar el fragmento ListView cuando no está enfocado
  • Android SupportLib - FrameLayout en CoordinatorLayout con AppBarLayout consumiendo toda la altura de la pantalla
  • Disposiciones de Android: ¿Cómo evitar pesas anidadas?
  • Viewpager está siendo expulsado de la pantalla
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.