Background/foreground modes
Describes how to handle background or foreground modes in mobile apps.
Mobile apps foreground and background modes
Mobile apps can change their state from background mode to foreground mode and vice-verse. For example, when the user switches to another app, or when going back to the home screen, the current app goes to background mode. An app goes to foreground mode, when it is re-selected from the active apps list.
Detecting foreground/background mode changes
- The action
enterbackground
is fired, when the app goes to background mode. - The action
enterforeground
is fired, when the app goes to foreground mode.
enterforeground
action is not fired when the app starts. This action is
only fired when returning to foreground mode, after it was in background mode.ON
ACTION
handler: ON ACTION enterbackground
LET skip_timers = TRUE
ON ACTION enterforeground
IF NOT ask_password() THEN
EXIT PROGRAM
ENF IF
For example, when the app enters background mode, it is recommended that the program suspend any
activity, and skip code that would be executed in ON TIMER
triggers.
On the other hand, when the app enters foreground mode, the program can for example ask the user's login/password again, for security reasons, to make sure that the mobile device did not end up in other hands while the app was in background mode.
enterforeground
/ enterbackground
actions are used, consider
setting action default attributes for these action in your .4ad file as
follows:<ActionDefaultList>
...
<ActionDefault name="enterbackground" validate="no" defaultView="no" contextMenu="no"/>
<ActionDefault name="enterforeground" validate="no" defaultView="no" contextMenu="no"/>
...
</ActionDefaultList>
ON ACTION
handlers:ON ACTION enterbackground (VALIDATE=NO, DEFAULTVIEW=NO)
...
ON ACTION enterforeground (VALIDATE=NO, DEFAULTVIEW=NO)
...
See also List of predefined actions.
Checking if the app is currently in foreground mode
mobile.isForeground
front call:DEFINE fg BOOLEAN
CALL ui.Interface.frontCall("mobile", "isForeground", [], [fg] )
IF fg THEN
...
END IF
What does the app when in background mode?
On iOS, when the app is in background mode, the program cannot do anything meaningful outside push notifications or audio play.
On Androidâ„¢, when the app is in background mode, the program can continue its execution.
Avoid Android to terminate app when in background
Genero programs running on servers are typically not prepared to be stopped at any time (except in case of major failure): it's the program that decides when it terminates.
On Android devices, an app can switch between foreground to background states, and the system can decide to stop an app in background state, to release resources.
By default, when the Genero mobile app goes to background state, a notification is shown by GMA to keep the app running, and avoid Android stopping the app. The notification disappears, when the app returns to foreground state.
To allow Android to stop your app
when it is in background state, set the androidKeepForeground
style attribute to
"no"
at the UserInterface
element type. In this case, GMA will not display a notification, when the app switches to
background mode.
When using androidKeepForeground=no
, make sure that your code is ready to be
stopped at any time.