Práctica recomendada: servicio vinculante a una actividad

Tengo un servicio de la red que funciona en el fondo. Tengo esta variable global mConnection dentro de la Actividad

 protected ServiceConnection mConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder binder) { serviceobject = ((NetworkService.MyBinder) binder).getService(); } public void onServiceDisconnected(ComponentName className) { serviceobject = null; } }; 

Y luego enlazar el servicio en onCreate(..) la actividad onCreate(..) utilizando

 bindService(new Intent(this, NetworkService.class), mConnection,Context.BIND_AUTO_CREATE); 

La clase NetworkService tiene una clase interna MyBinder

 public class MyBinder extends Binder { NetworkService getService() { return NetworkService.this; } } 

Ahora, para invocar cualquier método de Servicio de la Actividad, utilizo el objeto de serviceobject y creo un AsyncTask para cada invocación de método (Sé que invocar métodos de Servicio de la Actividad anula el uso de tener Services.I utilizar esto para los métodos de luz que doesn ' T implican mucho cálculo)

Esto me ayuda a manejar directamente los datos del Service utilizando el objeto de serviceobject . Desvincular el servicio en la Activity 's onDestroy()

 @Override protected void onDestroy() { unbindService(mConnection); super.onDestroy(); } 

¿Es esta la mejor manera de hacerlo o estoy equivocado en alguna parte?

Creo que lo que quieres hacer es ejecutar un Remote Service . Eso es lo que ServiceConnection y bindService está acostumbrado. La idea es que su servicio se ejecute en el baackground y cualquier actividad puede "atar" e interactuar a través de la interfaz que define en AIDL.

El acceso al servicio es rápido para que pueda llamar a método desde su servicio desde el subproceso de interfaz de usuario sin el uso de AsyncTask . Ese es un beneficio.

Sin embargo, la implementación es un poco tediosa porque debe escribir esta interfaz AIDL.

Te recomiendo que leas el tutorial de Google aquí: http://developer.android.com/guide/developing/tools/aidl.html

Y luego a google "Remote Service AIDL" con "tutorial" o "ejemplo".

Buena suerte.

  • ¿Qué es un JobService en Android?
  • ¿Por qué otro servicio encima de IMarketBillingService?
  • Continuar el servicio incluso si la aplicación se ha eliminado de la aplicación Reciente.
  • ¿Puede iniciar un IntentService en un proceso separado?
  • Diferencias entre intención y pendiente
  • Razones por las que la intención pasada sería NULL en onStartCommand
  • Asegúrese de que mi código es seguro para hilos
  • ¿Por qué utilizar servicios vinculados (no iniciados) dentro del proceso de solicitud?
  • Servicio de detector de balizas de estimación en segundo plano
  • Android: Variables de acceso pasadas al servicio
  • ¿Cuál es el número máximo de servicios limitados por el sistema operativo Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.