Android: Manejo de estados de entrada en aplicaciones de chat
Este artículo forma parte del diseño de una aplicación de chat con la serie firebase. Es una gran característica mostrar el estado de escritura del usuario en tiempo real al otro usuario en la aplicación de chat.
Para manejar el estado de escritura, el método típico es actualizar el estado en el backend y usar el oyente de instantáneas en websocket, firebase firestore para observarlo en tiempo real desde el lado opuesto del usuario.
En el backend, una matriz llamada Usuarios que escriben. Aquí, cada vez que un usuario ingresa un mensaje, su user_id se agregará a Usuarios que escriben La matriz se elimina una vez completada la entrada.
Puede consultar la documentación de Firestore para usar Matriz en Firestore
nosotros Solo aprenderá a actualizar el estado de escritura de forma eficaz, no cada vez que cambie el texto. Podemos lograr esto usando Handler.
Manejador con Runnable
Echemos un vistazo a Handler y Runnable,
Manejador de la documentación:
El controlador le permite enviar y procesar objetos ejecutables asociados con el hilo MessageQueue
. Cuando crea un nuevo controlador, se vinculará a un Looper
Pasará el ejecutable a la cola de mensajes del Looper y lo ejecutará en el hilo del Looper.
Poder correr:
En pocas palabras, Runnable es una interfaz para la ejecución simultánea de código. incluso, Clase de hilo de Android Se ha implementado con runnable.
- Mecanografía: Las banderas booleanas se utilizan para ignorar cada cambio de texto, por ejemplo Rebote Operadores en rxjava.
- Simular el estado de la transmisión en vivo: Livedata para mostrar el estado en gif de demostración
Líneas 13-20: Empiece a escribir La función se activa en onTextChange de EditTextView.Si el mensaje está vacío, se eliminará directamente del ID de usuario actual. Typing_users del usuario opuesto Matriz y isTyping, devolución de llamada, estado de simulación Cambiar al valor predeterminado.
Línea 21: Mecanografía será Es falso solo si es la primera llamada de una función con un umbral de 3 segundos. Esta situación ayuda a reducir múltiples llamadas a la API para actualizar el estado de entrada.
Líneas 22-25: Estado de simulación Actualice a verdadero para ver el comportamiento del código en la interfaz de usuario.La ID del usuario actual se agrega a Usuarios que escriben Usuario de contraparte. Mecanografía El indicador se cambia a verdadero y se agrega una interfaz ejecutable al controlador con un retraso de 3000 milisegundos.
Líneas 30-34: Eliminado en la identificación del usuario actual que se puede ejecutar y Mecanografía
Cambie el valor a falso. Entonces, esto puede ayudarnos a actualizar el estado nuevamente.