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
- El servicio USSD no funciona
- ¿Cómo implemento un BroadcastReceiver en una clase de servicio en Android?
- ¿Cómo comprobar si un servicio se está ejecutando en Android?
- ¿Está el servicio de Android todavía vivo incluso después de que onDestroy () sea llamado?
- Servicio enlazado a BroadcastReceiver
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?
- Android Service ha filtrado a pesar de que es (supuestamente) no se ejecuta
- ¿Cómo se puede ejecutar servicio indefinidamente y también permitir la vinculación en android?
- Vibrar en la notificación push
- ¿Cómo ejecuto un método de servicio periódicamente?
- Android: escucha los mensajes SMS entrantes
- Cómo configurar el permiso WRITE_SECURE_SETTINGS en android?
- NullPointerException en el constructor de Service
- Android: cómo determinar si ya se está ejecutando un servicio?
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.
- Android obtener foto de contacto, nombre y número de móvil
- Reproducción de un video descargado Error: 1, -2147483648