Clearly a job for Tasker (see also: tasker, automation). You could create a profile being active permanently, and assign it a task running in a loop. An example could look like:
The "LAUNCH APP" action lets you select the app to launch. So the loop would count from 0 to 3, launch the corresponding app, then wait 5 minutes (i.e. the app stays in foreground for those 5 minutes). Once #3 has been processed, the task would quit – but should immediately be re-launched, as the condition is still met.
I've not tested this specific configuration, so above is "plain theory" – but should get you started. You can consult the Tasker User Guide for available commands etc, but Tasker also offers a context-sensitive built-in help. Get yourself a 7-day Trial first if you want to test it first, it's available on the project site.