PC SOFT

WINDEVWEBDEV AND WINDEV MOBILE
ONLINE HELP

Home | Sign in | English UK
  • Overview
  • Implementation
  • In the editor
  • By programming
  • Operating mode
  • Specific features
  • Specific features for Android
  • Specific features for iOS
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Others
Stored procedures
Overview
Continuing to run a process when the application is in background is very useful on mobile:
  • appointment reminder (display a notification),
  • turnover calculation in real time,
  • data retrieval, ...
The process must be found in a procedure. All you have to do is specify the frequency at which this procedure will be run.
Between the calls, the procedure consumes no battery and no CPU.
Implementation

In the editor

To automate a procedure:
  1. Display the procedure code.
  2. Display the description window of procedure automations:
    • Click Icon found in the procedure bar.
    • Select "Configure the automated processes of the procedure" from the popup menu of procedure ("Project explorer" pane).
    • Select "Properties" from the popup menu of procedure in the "Code" pane.
  3. In the window that is displayed, select the automation type: "Periodic execution when the application is in background".
  4. Specify the time interval (in minutes). This interval is the minimum time interval between two task executions. Used to guarantee that the task will not be run during this time interval. However, the system can increase the time interval according to several factors (important workload, low battery, ...). Therefore, the real time interval can change and it can be quite long (several hours).
  5. Validate.

By programming

To add a background task, use BackgroundTaskAdd.
Note: The functions can also be used to handle the background tasks:
Versions 23 and later
BackgroundTaskDelete
New in version 23
BackgroundTaskDelete
BackgroundTaskDelete
Deletes a background task (that was added by BackgroundTaskAdd).
Versions 23 and later
BackgroundTaskList
New in version 23
BackgroundTaskList
BackgroundTaskList
Returns the list of background tasks for the application.

Operating mode

Once added, the background task is automatically run by the system at regular time interval.
The task is persistent, it will continue to be run periodically when the application is stopped, even when the device is restarted.
If the task is triggered while the application is not started, the application will be run in background (without opening the first project window), the initialization process of project and the declaration process of classes and sets of procedures will be run before calling the procedure associated with the task.
The task will be run when the application is not started or when the application is in background. If the application is displayed in the foreground, its execution will be postponed.
As the task can be run in a secondary application thread, the code of WLanguage procedure must contain no access to the application GUI and no opening of dialog boxes (via Info, Error, etc.). If the task must interact with the users, you can use notifications (Notifxxx functions).
Specific features
Android

Specific features for Android

  • Debugging:
    To simplify the debugging, you can force the execution of a background task via ADB by using the following command line:
    adb shell cmd jobscheduler run -f <application> <id>

    where:
    • <application> corresponds to the package name of application as defined in the generation wizard (ex: com.mycompany.myapplication).
    • <id> is the identifier of task to run (returned by BackgroundTaskAdd).
  • Required version: Adding background tasks is available for the devices running Android version 5.0 or later (api level 21).
    A fatal error occurs if the function is used with an earlier system version.
    To find out the version of Android system on which the application is run, use SysAndroidVersion.
  • Required permissions:
    The call to this function modifies the permissions required by the application.
    Required permissions:
    RECEIVE_BOOT_COMPLETED: allows an application to receive the ACTION_BOOT_COMPLETED that is diffused after the system finishes booting.
  • Once run, the task in background continues to operate as long as the application is installed.
  • The tasks in background are not called in the simulator.
iPhone/iPad

Specific features for iOS

  • Runtime duration:
    The background tasks have a total of 30 seconds to be run. If this time-out is exceeded, the application is directly stopped (this time-out can be reduced according to the system availability). Therefore, the task execution must be as fast as possible.
    Practically, the system is using the execution time of task to define the real frequency at which it must be called.
  • Debugging:
    You have the ability to debug the background tasks via Xcode, by triggering them manually via "Debug .. Simulate Background Fetch".
  • In order for the system to consider that the application can run background tasks, the application must perform network requests (calls to Webservices, HTTP requests, access to a HFSQL database, GPS, Email, ...). Indeed, iOS checks whether the application exploits data coming from the network.
  • The application must be able to run background tasks. On the device, in the "Device parameters .. Application name", the option "Refresh in background" must be checked.
  • When the application is specifically closed by a double press on the Home button and a swipe, the background procedure has less chances to be run.
  • The procedure will not be called anymore if the devices switches to "energy saving" mode.
  • The time-out between two procedure executions will be reduced if the device is plugged and connected to a WiFi network.
  • The frequency at which the application is enabled by the user will impact the call frequency of procedure.
  • The faster the request execution is, the shorter the time between two executions. In most cases, a long execution time of procedure means that the calls will be spaced out in time. The system gives priority to the procedures that consume less CPU.
Minimum version required
  • Version 23
Comments
Click [Add] to post a comment