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
  • Modo de funcionamiento
  • Manejar las tareas de Background
  • 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
Añade una nueva tarea de Background. Esta tarea se realizará periódicamente cuando se detenga la aplicación o cuando se esté ejecutando en el Background.
Ejemplo
// Asks to process the incoming emails once a day
BackgroundTaskAdd(ProcBackgroundEmailProcess, 24*60)
PROCEDURE ProcBackgroundEmailProcess()
// Process the pending emails
n is int = ProcessIncomingEmails()
IF n > 0 THEN
// Notifies the user
notif is Notification
notif.Title = "Process completed"
notif.Message = StringBuild("%1 emails have been processed", n)
NotifAdd(notif)
END
Sintaxis
<Result> = BackgroundTaskAdd(<WLanguage procedure> [, <Time interval>])
<Result>: Integro
  • Identificador de la tarea añadida,
  • 0 si se produce un error. Para obtener más información sobre el error, utilice la función ErrorInfo.
<WLanguage procedure>: Nombre de Procedure
WLanguage Procedure ("callback" Procedure) llamado al ejecutar la tarea.
Este Procedure debe ser un Procedure global de proyecto y no debe esperar ningún parámetro. De lo contrario, se producirá un error fatal al llamar a la función BackgroundTaskAdd.
<Time interval>: Entero opcional
Tiempo mínimo interval (expresado en minutos) 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).
Por Default:
  • el tiempo interval entre dos ejecuciones de tareas es set a 1 hora.
  • el tiempo mínimo que interval permite es set a 15 minutos.
Este parámetro puede corresponder a:
  • un número entero correspondiente al número de minutos,
  • una variable de tipo Duration,
  • la duración en un formato legible (por ejemplo, "20min").
Observaciones

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).

Manejar las tareas de Background

  • Para eliminar una tarea agregada con la función BackgroundTaskAdd, utilice la función BackgroundTaskDelete.
  • Para listar las tareas Background añadidas, utilice BackgroundTaskList.
  • InBackgroundMode se utiliza para saber si un procedure se ejecuta en modo "background" o no.
  • Desde el editor, se puede especificar que un Procedure debe ser ejecutado en una tarea de fondo habilitando la opción correspondiente desde la ventana de configuración de la automatización de Procedure. La tarea se añadirá automáticamente durante el siguiente inicio de la aplicación.: En este caso, no es necesario llamar a BackgroundTaskAdd.
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.
Clasificación Lógica de negocio / UI: Lógica de negocio
Componente: wd290android.jar
Versión mínima requerida
  • Versión 23
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/05/2022

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