Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aritchie/jobs
Background Jobs Framework for Xamarin & UWP
https://github.com/aritchie/jobs
Last synced: 30 days ago
JSON representation
Background Jobs Framework for Xamarin & UWP
- Host: GitHub
- URL: https://github.com/aritchie/jobs
- Owner: aritchie
- License: mit
- Archived: true
- Created: 2018-09-14T01:01:24.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2022-12-08T03:45:26.000Z (about 2 years ago)
- Last Synced: 2024-11-03T12:06:10.864Z (about 1 month ago)
- Language: C#
- Homepage:
- Size: 3.91 MB
- Stars: 82
- Watchers: 11
- Forks: 15
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- Changelog: changelog.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-xamarin-forms - Jobs ★84
README
# UPDATE - This library has has moved to the Shiny Framework at https://github.com/shinyorg/shiny
# ACR Background Jobs Plugin for Xamarin & Windows
[Change Log - March 5, 2019](changelog.md)
### [SUPPORT THIS PROJECT](https://allancritchie.net/projects)Plugin.Jobs|[![NuGet](https://img.shields.io/nuget/v/Plugin.Jobs.svg?maxAge=2592000)](https://www.nuget.org/packages/Plugin.Jobs/)
### BUILDS
Branch|Status
------|------
Master|[![Build status](https://dev.azure.com/allanritchie/Plugins/_apis/build/status/Jobs?branchName=master)](https://dev.azure.com/allanritchie/Plugins/_build/latest?definitionId=0)
Dev|[![Build status](https://dev.azure.com/allanritchie/Plugins/_apis/build/status/Jobs?branchName=dev)](https://dev.azure.com/allanritchie/Plugins/_build/latest?definitionId=0)## PLATFORMS
Platform|Version
--------|-------
Android|5.0+
iOS|8+
Windows UWP|16299+
Any Other Platform|Must Support .NET Standard 2.0iOS, Android, & UWP implementations use [Xamarin Essentials](https://github.com/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
* [Android](platform_android.md)
* [iOS](platform_ios.md)
* [UWP](platform_uwp.md)
* [Running Adhoc One-Time Tasks](#adhoc)
* [Scheduling Background Jobs](#schedule)
* [Cancelling Jobs](#cancel)
* [Running Jobs On-Demand](#ondemand)
* [Querying Jobs, Run Logs, & Events](other.md)
* [Dependency Injection](di.md)
* [FAQ - Frequently Asked Questions](faq.md)
## SETUPInstall From [![NuGet](https://img.shields.io/nuget/v/Plugin.Jobs.svg?maxAge=2592000)](https://www.nuget.org/packages/Plugin.Jobs/)
Follow the Setup Guids
* [Android](platform_android.md)
* [iOS](platform_ios.md)
* [UWP](platform_uwp.md)## HOW TO USE
#### Creating a One-Time Adhoc Job
```csharp// To issue an adhoc task that can continue to run in the background
CrossJobs.Current.RunTask(async () =>
{
// your code
});
```#### Scheduling a background job
```csharp
// 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
```csharp
// Cancelling A Job
CrossJobs.Current.Cancel("YourJobName");// Cancelling All Jobs
CrossJobs.Current.CancelAll();
```#### Running Jobs On-Demand
```csharp
// Run All Jobs On-Demand
var results = await CrossJobs.Current.RunAll();// Run A Specific Job On-Demand
var result = await CrossJobs.Current.Run("YourJobName");```