Esto cae bajo los fundamentos de la comunicación de protocolo. El cliente de Android ha solicitado una transacción y el servidor debe realizar la transacción. Si la transacción depende del acuse de recibo del cliente de Android, entonces llame a la comunicación ACK / NAK.
ACK (acuse de recibo) y NAK (acuse de recibo negativo) se utilizan para informar al otro lado el resultado de una solicitud.
Lo que se está planteando es un tipo de protocolo de enlace de intercambio entre el cliente y el servidor, y puede llevarse a cabo con un ACK de cambio básica / NAK.
Aquí hay un ejemplo de Android cargando un archivo con reconocimiento bidireccional.
Android -> upload files -> Server
Android <- ACK #id <- Server
Android -> ACK #id -> Server
En el ejemplo anterior, agregué un #id
identificador único para la transacción. El servidor debe recibir los archivos, crear un registro de transacciones y enviarlo como respuesta a Android. Android debería seguir con un reconocimiento de esa transacción (o alternativamente un NAK para un rechazo).
Aquí hay un ejemplo de una desconexión de Android durante el apretón de manos.
Android -> upload files -> Server
Android <- ACK #id <- Server
/** no ACK response **/
En el ejemplo anterior, el Servidor ha aceptado los archivos cargados y envió una #id
respuesta ACK a Android, pero Android nunca responde con un ACK. El dispositivo Android no ha podido completar el apretón de manos. Depende de usted decidir cómo debe manejar esto el servidor. Destruya la transacción, conserve la transacción y espere a que el dispositivo Android regrese más tarde o complete la transacción de todos modos.
El servidor puede suponer que ya que el dispositivo no respondió con ACK. Que el dispositivo Android no actualizó su estado interno para indicar que la carga se realizó correctamente. Descartaría la transacción y permitiría que el dispositivo la repita en el futuro.