Press "Enter" to skip to content

Building a Task Sequence in Xamarin Forms/ MAUI (Part 1)

A task sequence is the concept of having a task flow that the application can run sequentially. One common scenario to use this is running several tasks while showing the splash screen.

In this article, I’m going to show you how to do that in Xamarin Forms/MAUI. This series will be divided into the following parts:

Advantage of using a task sequence

The main advantages of building a sequence are:

  • Centralized and pre-defined flow of what should happen in an ordered step by step sequence.
  • Skip tasks based on specific conditions (Ex, if there is no new version available you can skip that step or the Onboarding page will run the first time the user opens the app).
  • Start running the sequence from a specific task  (Ex. If the user closes the application running a task, you can save the state and open the application in that specific state).

Use case

Show the following task sequence when application starts.

Let’s do it step by step

1. Define the flow

Let’s define the task flow:

  1. Download initial data in the background Data that needs to be downloaded before entering application. (For this example, we will just do a delay simulating data download)
  2. Update version check Optional task that should only run when there is a newer version available in the store.
  3. Onboarding screen Optional task that should only run the first time application is launched.
  4. Request App Permissions Optional task that should only run if user has not allowed/denied the required permissions yet.
  5. Authentication Optional task and should only run if the user is not authenticated or session expired.
  6. Advertising Runs an advertisement video before entering application (The user can skip this step manually).
  7. Home

2. Create a common interface

Let’s create an interface that will represent all the tasks in our flow:

3. Create the Splash Screen

For this use case, we will run the task sequence from a splash screen. Instead of using the default native splash screen, we are going to create custom splash screen.

4. Create the Tasks

Not all task in the sequence are pages, some will run without showing a page. For example, SimulateDownloadDataStartupTask and UpdateVersionStartupTask.

Now let’s create the pages:

Create a base page to implement the IStartupTask interface:

When a page that inherits from StartupPage finish it purpose will call the CompleteAsync method, that will let know our sequence that task has completed.

5. Let’s build the sequencer

Define the interface that represents a the task sequencer.

The task sequencer purpose is to start running the sequence and coordinate each task run. We can create the task sequencer by using the builder pattern.

6. Let’s start the sequence

On the SplashPage, create the StartupTaskBuilder with the tasks that will be part of the sequence. The builder will return the sequencer that will be used to start the task sequence.

Result

Stay tuned for the next part of this series where you’ll see how to start running the sequence from a specific task, skip tasks, conditionate task run, etc.

Check the full source code here.

Happy Task Sequence!

3 Comments

  1. Christian Christian

    Awesome post! ANd really well thought through. Exactly what I was looking for. 🙂 Just one question: How did you get the CarouselView to work in MAUI? Because right now it doesn’t seem to work (in Preview 14).

  2. Mark Downes Mark Downes

    Very nice article. I’ve done a similar thing in an app that I worked on but I like your design better.

  3. Pedro Hernandez Pedro Hernandez

    Great Master !!!

Comments are closed.