Skip to content
Background Jobs Framework for Xamarin & UWP
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Plugin.Jobs.Tests nuget updates and change log updates Mar 5, 2019
Plugin.Jobs minor Mar 6, 2019
.gitattributes Add .gitignore and .gitattributes. Sep 13, 2018
ISSUE_TEMPLATE Initial commit Sep 14, 2018
Lib.sln minor Mar 6, 2019
Plugin.Jobs.sln v2 Mar 5, 2019 v2 Mar 5, 2019
nuget.exe nuget updates and change log updates Mar 5, 2019 iOS info.plist cofiguration fix Oct 14, 2018 update droid & docs Sep 28, 2018
push.cmd beta4 Sep 28, 2018

ACR Background Jobs Plugin for Xamarin & Windows

Change Log - March 5, 2019


Library NuGet
Plugin.Jobs NuGet
Plugin.Jobs.DryIoc NuGet
Plugin.Jobs.Autofac NuGet


Branch Status
Master Build status
Dev Build status


Platform Version
Android 5.0+
iOS 8+
Windows UWP 16299+
Any Other Platform Must Support .NET Standard 2.0

iOS, Android, & UWP implementations use Xamarin Essentials


  • Cross Platform Background Jobs Framework
  • Run adhoc jobs in the background (mainly for use on iOS)
  • Define jobs with runtime parameters to run at regular intervals
  • Internal logging to let you know how often jobs are running, if they complete successfully or error
  • Place criteria as to when jobs can run responsibly
    • device is charging
    • battery is not low
    • Internet connectivity via Mobile
    • Internet connectivity via WiFi



Install From NuGet

Follow the Setup Guids


Creating a One-Time Adhoc Job

// To issue an adhoc task that can continue to run in the background 
CrossJobs.Current.RunTask(async () => 
    // your code

Scheduling a background job

// first define your job
public class YourJob : IJob
    public async Task Run(JobInfo jobInfo, CancellationToken cancelToken)
        var loops = jobInfo.GetValue("LoopCount", 25);

        for (var i = 0; i < loops; i++)
            if (cancelToken.IsCancellationRequested)

            await Task.Delay(1000, cancelToken).ConfigureAwait(false);
var job = new JobInfo
    Name = "YourJobName",
    Type = typeof(YourJob),

    // these are criteria that must be met in order for your job to run
    BatteryNotLow = this.BatteryNotLow,
    DeviceCharging = this.DeviceCharging
    NetworkType = NetworkType.Any,
    Repeat = true; //defaults to true, set to false to run once OR set it inside a job to cancel further execution

// you can pass variables to your job
job.SetValue("LoopCount", 10);

// lastly, schedule it to go - don't worry about scheduling something more than once, we just update if your job name matches an existing one

Cancelling Jobs

// Cancelling A Job

// Cancelling All Jobs

Running Jobs On-Demand

// Run All Jobs On-Demand
var results = await CrossJobs.Current.RunAll();

// Run A Specific Job On-Demand
var result = await CrossJobs.Current.Run("YourJobName");
You can’t perform that action at this time.