AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Funciones específicas para móviles / Funciones de tareas en segundo plano
  • Presentación
  • Implementación
  • En el editor
  • Mediante programación
  • Modo de funcionamiento
  • Características específicas
  • Características específicas de Android
  • Funciones específicas para iOS
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
Seguir ejecutando un Process cuando la aplicación está en segundo plano es muy useful en el móvil:
  • recordatorio de cita (mostrar un Notification),
  • cálculo del volumen de negocios en tiempo real,
  • recuperación de datos, ....
El proceso debe simplemente estar presente en un procedimiento. Todo lo que tiene que hacer es especificar la frecuencia con la que se ejecutará este procedimiento.
Entre las llamadas, el procedimiento no consume ni batería ni CPU.
Implementación

En el editor

Para automatizar a Procedure:
  1. Mostrar el código de la Procedure.
  2. Abre la ventana de la description de las automatizaciones de la Procedure:
    • Haga clic en Icon en la barra de Procedure.
    • Seleccione la opción "Configurar procesos automatizados del procedimiento" en el menú contextual del procedimiento (en el panel "Explorador de proyectos").
    • Seleccione "Propiedades" en el menú contextual de la Procedure en el panel "Código".
  3. En la ventana que aparece, seleccione el tipo de automatización: "Ejecutar periódicamente cuando la aplicación está en segundo plano".
  4. Especifique el tiempo interval (en minutos). Este interval es el tiempo mínimo interval entre dos ejecuciones de tareas. Se utiliza para garantizar que la tarea no se ejecutará durante este tiempo interval. Sin embargo, el sistema puede aumentar el tiempo de interval de acuerdo con varios factores (carga de trabajo importante, batería baja, etc.). Por lo tanto, el tiempo real interval puede cambiar y puede ser bastante largo (varias horas).
  5. Validar.

Mediante programación

Para añadir una tarea Background, utilice BackgroundTaskAdd.
Observación: También puede manipular Background tareas utilizando las siguientes funciones:
BackgroundTaskDeleteBorra una tarea de Background (que fue añadida por Background TaskAdd).
BackgroundTaskListDevuelve la lista de tareas de Background para la aplicación.

Modo de funcionamiento

Una vez añadida, la tarea de fondo es ejecutada automáticamente por el sistema a tiempo regular interval.
La tarea es persistente, continuará ejecutándose periódicamente cuando se detenga la aplicación, incluso cuando se reinicie el dispositivo..
Si la tarea se lanza mientras la aplicación no está iniciada, la aplicación se ejecutará en segundo plano (sin abrir la primera ventana del proyecto), la inicialización Process del proyecto y la declaración Process de las clases y conjuntos de Procedure s se ejecutarán antes de llamar al Procedure associated con la tarea.
La tarea se ejecutará cuando la aplicación no se inicie o cuando la aplicación esté en Background. Si la aplicación se muestra en primer plano, se aplazará su ejecución.
Como la tarea puede ejecutarse en un hilo secundario de la aplicación, el código del lenguaje WL Procedure no debe contener un acceso a la UI de la aplicación ni abrir cuadros de diálogo (mediante Info, Error, etc.). Si la tarea debe interactuar con los usuarios, puede utilizar las notificaciones (Funciones de Notifxxx).
Características específicas
Android

Características específicas de Android

  • Si la tarea debe ejecutarse mientras el dispositivo está en modo de espera, se recomienda pedir al usuario que desactive la optimización de la batería para esta aplicación con SysBatteryOptimBackground.
  • Debugging:
    Para fines de depuración, puede forzar la ejecución de una tarea en segundo plano a través de ADB utilizando el siguiente comando Line:
    adb shell cmd jobscheduler run -f <application> <id>

    donde:
    • <aplicación> corresponde al nombre del paquete de la aplicación tal y como se define en la generación asistente (ej.: com.mycompany.myapplication).
    • <id> es el identificador de la tarea a ejecutar (devuelto por BackgroundTaskAdd).
  • Versión requerida:
    Las tareas de Background sólo pueden añadirse en los dispositivos que funcionan con Android 5.0 o posterior (nivel 21 de API).
    Si se utiliza la función con una versión anterior del sistema, se produce un error fatal.
    Para determinar la versión de Android en la que se está ejecutando la aplicación, utilice la función SysAndroidVersion.
  • Permisos necesarios:
    La llamada a esta función modifica los permisos requeridos por la aplicación.
    Permisos necesarios:
    RECEIVE_BOOT_COMPLETADO: permite que una aplicación reciba el mensaje ACTION_BOOT_COMPLETED que se difunde después de que el sistema termina de arrancar.
  • Una vez ejecutada, la tarea en Background continúa funcionando mientras la aplicación esté instalada.
  • Las tareas de Background no son llamadas en el simulador.
iPhone/iPad

Funciones específicas para iOS

  • Runtime duration:
    Las tareas de Background tienen un total de 30 segundos para ser ejecutadas. Si se supera este tiempo de espera, la aplicación se detiene directamente (este tiempo de espera puede reducirse en función de la disponibilidad del sistema). Por lo tanto, la ejecución de la tarea debe ser lo más rápida posible..
    En la práctica, el sistema utiliza el tiempo de ejecución de la tarea para definir la frecuencia real a la que debe llamarse.
  • Debugging:
    Tienes la capacidad de depurar las tareas de Background mediante Xcode, activándolas manualmente mediante "Depurar... Simular la búsqueda de Background".
  • Para que el sistema considere que la aplicación puede ejecutar tareas en segundo plano, la aplicación debe realizar peticiones de red (llamadas a Webservices, peticiones HTTP, acceso a una base de datos HFSQL, GPS, Email, ...). De hecho, iOS comprueba si la aplicación explota los datos procedentes de la red.
  • La aplicación debe ser capaz de ejecutar las tareas de Background. En el aparato, en "Parámetros del aparato .. Nombre de la aplicación", debe estar marcada la opción "Actualizar en Background".
  • Cuando la aplicación se cierra específicamente con una doble pulsación del botón de Inicio y una pasada, el fondo Procedure tiene menos posibilidades de ser ejecutado.
  • El Procedure no se llamará más si los aparatos cambian al modo "ahorro de energía".
  • El tiempo de espera entre dos ejecuciones de Procedure se reducirá si el dispositivo está enchufado y conectado a una red WiFi.
  • La frecuencia con la que el usuario habilite la aplicación afectará a la frecuencia de llamada de Procedure.
  • Cuanto más rápida sea la ejecución de la petición, menor será el tiempo entre dos ejecuciones.. En la mayoría de los casos, un largo tiempo de ejecución de Procedure significa que las llamadas se espaciarán en el tiempo. El sistema da prioridad a los procedimientos que consumen menos CPU.
Versión mínima requerida
  • Versión 23
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/01/2023

Señalar un error o enviar una sugerencia | Ayuda local