Estoy usando este complemento para mostrar que la aplicación está ocupada, pero en Android la animación siempre está atascada.

Por ejemplo, lo uso en este código:

private async Task SelectWorkOrderItemAsync(WorkOrderLista WoLista) {
    if (WoLista == null) return;

    // show the loading
    Acr.UserDialogs.UserDialogs.Instance.ShowLoading("Loading..");

    // get datas from DB
    WorkOrderDettaglio WoDett = await _WorkOrderService.GetDettaglioWorkOrder(WoLista.Guid_servizio);

    // this code opens another page with the datas extracted above
    await NavigationService.NavigateToAsync<DettaglioWoViewModel>(WoDett, Costanti.TipoPush.Normale, WoDett.NumWoAnno);

    // hide the loading
    Acr.UserDialogs.UserDialogs.Instance.HideLoading();
}

Este es el resultado:

Como puede ver, el indicador de carga después de algunos segundos se congela.

Este comportamiento es el mismo si uso el ActivityIndicator predeterminado.

En IOS todo funciona bien.

¿Cómo puedo usarlo correctamente?

0
Hikari 24 feb. 2018 a las 10:50

2 respuestas

La mejor respuesta

No tengo un dispositivo / simulador Android para probar en este momento y no puedo reproducir en UWP, pero su llamada de servicio se está ejecutando de forma asincrónica en el hilo principal, su ActivityIndicator no debe bloquearse si ejecuta su llamada de servicio en un hilo de trabajador.

// get datas from DB
WorkOrderDettaglio WoDett = null;
await Task.Run(async () => WoDett = await _WorkOrderService.GetDettaglioWorkOrder(WoLista.Guid_servizio));
1
Roger Leblanc 24 feb. 2018 a las 13:09

El indicador de actividad debe estar vinculado (isVisibleProperty e isRunningProperty) a una propiedad bool en su ViewModel y su ViewModel debe implementar

INotifyPropertyChanged

Aquí es una gran explicación sobre cómo lograrlo.

Si se necesita una superposición en este respuesta puede averiguar cómo lograrlo.

0
Ingenator 25 feb. 2018 a las 03:21