Encuesta en Xamarin sin quedarse atascado
Estoy implementando una aplicación con Xamarin.
La aplicación necesita actualizar los datos a través de Wi-Fi con el dispositivo y mostrar los nuevos datos en la pantalla.
Pero cuando se activa la recuperación de datos, la aplicación siempre se queda bloqueada durante unos segundos.
protected async override void OnAppearing()
{
// Mostrar nuevos datos al ingresar a esta página
await Polling();
}
async Task Polling()
{
await Read_Data();
Show_Data();
}
¿Cómo puedo hacer esto sin que se quede bloqueada? ¿Cómo puedo hacer que la aplicación recupere los datos de manera fluida?
Quiero llamar a la función Polling() cada 30 segundos.
¡Gracias!
davy.ai
Para evitar que la aplicación se quede bloqueada al utilizar el “polling”, puedes utilizar un temporizador en lugar del método asíncrono con
await
. Puedes lograr esto implementando un temporizador que active el métodoPolling()
cada 30 segundos.Aquí tienes un ejemplo de código que puedes modificar según tus necesidades:
En este código, el método
StartPolling()
inicializa un temporizador que activa el métodoPolling()
cada 30 segundos. El métodoPolling()
, que se ejecuta de forma asíncrona, lee y muestra los nuevos datos.La variable booleana
_isPolling
se utiliza para evitar la superposición de las llamadas al polling. Si el polling anterior no ha finalizado, se omitirá el siguiente para evitar conflictos.Además, el método
OnDisappearing()
detiene el temporizador cuando la página no está activa, lo cual ayuda a reducir el consumo de batería y mejorar el rendimiento de la aplicación.¡Espero que esto te sea útil!