Ciclo de vida y buenas prácticas

Conexión

  • Obtenga el HalBridge una sola vez (es singleton) y consérvelo a nivel de aplicación.
  • Observe isConnected de forma continua; no asuma un tiempo de conexión fijo.
  • Llame a disconnect() cuando la pantalla o la aplicación se destruyan, para liberar el enlace.

Operaciones asíncronas

  • Impresión, escaneo por cámara, escaneo con lector dedicado y banda magnética son asíncronos: registre el listener antes de invocar y libere recursos (unregisterListener) al recibir el resultado, no solo al cancelar. El servicio limita a un cliente por componente; no liberar el listener puede hacer que la siguiente operación del mismo componente sea rechazada.
  • Evite lanzar dos operaciones del mismo componente en paralelo; espere a que termine la anterior.
  • Ejecute las llamadas potencialmente bloqueantes fuera del hilo principal.

Manejo de errores

  • Verifique que el binder no sea nulo antes de usarlo: si el servicio aún no conecta, getRawBinder puede devolver nulo.
  • Trate el resultado de cada operación; recuerde que en impresión el éxito es el código -1.
  • Si una operación devuelve no autorizado, revise que el paquete de su aplicación esté habilitado en el servicio y que la llave de acceso sea la correcta.