IntentService y el patrón de encuadernación
Tengo IntentService que debe utilizar la referencia de otro servicio vía enlace:
public class BaseIntentService extends IntentService implements ServiceConnection { protected NetworkApi network; public BaseIntentService() { super("BaseIntentService"); } @Override public void onServiceConnected(ComponentName name, IBinder service) { network = ((NetworkApiBinder) service).getApi(); // never be invoked } @Override public void onServiceDisconnected(ComponentName name) { } @Override public void onCreate() { super.onCreate(); bindService(new Intent(this, NetworkApi.impl), this, BIND_AUTO_CREATE); } @Override public void onDestroy() { super.onDestroy(); unbindService(this); } @Override protected void onHandleIntent(Intent intent) { // network always null!!! } }
Pero cuando estoy usando un enlace como este onServiceConnected nunca se invocará. Sé que IntentService no está diseñado para el patrón de vinculación, pero puede ser que hay una solución común para tales tareas?
¡Gracias!
Pero cuando estoy usando un enlace como este onServiceConnected nunca se invoca
Esto se debe a que su IntentService
se destruye antes de que se IntentService
la solicitud de vinculación. Un IntentService
se destruye automáticamente cuando onHandleIntent()
completa todos los comandos pendientes.
pero puede ser que haya una solución común para tales tareas
No tiene dos servicios. Deshágase de IntentService
y mueva su lógica al otro servicio.