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.
Permalink
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
Sample
.gitattributes Add .gitignore and .gitattributes. Sep 13, 2018
.gitignore
ISSUE_TEMPLATE Initial commit Sep 14, 2018
LICENSE.md
Lib.sln minor Mar 6, 2019
Plugin.Jobs.sln
changelog.md v2 Mar 5, 2019
di.md v2 Mar 5, 2019
faq.md
nuget.exe nuget updates and change log updates Mar 5, 2019
other.md
platform_android.md
platform_ios.md iOS info.plist cofiguration fix Oct 14, 2018
platform_uwp.md update droid & docs Sep 28, 2018
push.cmd beta4 Sep 28, 2018
readme.md

readme.md

ACR Background Jobs Plugin for Xamarin & Windows

Change Log - March 5, 2019

SUPPORT THIS PROJECT

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

BUILDS

Branch Status
Master Build status
Dev Build status

PLATFORMS

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

FEATURES

  • 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

DOCS

SETUP

Install From NuGet

Follow the Setup Guids

HOW TO USE

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)
                break;

            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
CrossJobs.Current.Schedule(job);

Cancelling Jobs

// Cancelling A Job
CrossJobs.Current.Cancel("YourJobName");

// Cancelling All Jobs
CrossJobs.Current.CancelAll();

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.