Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
viktiga API:er
Lär dig hur du anger villkor som styr när bakgrundsaktiviteten ska köras.
Ibland kräver bakgrundsaktiviteter att vissa villkor uppfylls för att bakgrundsaktiviteten ska lyckas. Du kan ange ett eller flera av de villkor som anges av SystemConditionType när du registrerar bakgrundsaktiviteten. Villkoret kontrolleras när utlösaren har utlösts. Bakgrundsaktiviteten placeras sedan i kö, men den körs inte förrän alla nödvändiga villkor är uppfyllda.
Om du ställer in villkor för bakgrundsaktiviteter sparar du batteritid och PROCESSOR genom att förhindra att uppgifter körs i onödan. Om bakgrundsaktiviteten till exempel körs på en timer och kräver Internetanslutning lägger du till villkoret InternetAvailable till TaskBuilder- innan du registrerar uppgiften. Detta förhindrar att uppgiften använder systemresurser och batteritid i onödan genom att bara köra bakgrundsaktiviteten när timern har förflutit och Internet är tillgängligt.
Du kan också kombinera flera villkor genom att anropa AddCondition flera gånger på samma TaskBuilder. Var noga med att inte lägga till motstridiga villkor, till exempel UserPresent och UserNotPresent.
Skapa ett SystemCondition-objekt
Det här avsnittet förutsätter att du redan har en bakgrundsaktivitet associerad med din app och att appen redan innehåller kod som skapar ett BackgroundTaskBuilder -objekt med namnet taskBuilder. Se Skapa och registrera en pågående bakgrundsaktivitet eller Skapa och registrera en bakgrundsaktivitet som inte är bearbetad om du behöver skapa en bakgrundsaktivitet först.
Det här avsnittet gäller för bakgrundsaktiviteter som körs utanför processen samt de som körs i samma process som förgrundsapplikationen.
Innan du lägger till villkoret skapar du ett SystemCondition- objekt som representerar villkoret som måste gälla för att en bakgrundsaktivitet ska kunna köras. I konstruktorn anger du villkoret som måste uppfyllas med ett SystemConditionType- uppräkningsvärde.
Följande kod skapar ett SystemCondition--objekt som anger villkoret InternetAvailable:
SystemCondition internetCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition internetCondition{
Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ internetCondition = ref new SystemCondition(SystemConditionType::InternetAvailable);
Lägg till SystemCondition-objektet i bakgrundsaktiviteten
Om du vill lägga till villkoret anropar du metoden AddCondition på objektet BackgroundTaskBuilder och skickar objektet SystemCondition.
Följande kod använder taskBuilder för att lägga till villkoret InternetAvailable.
taskBuilder.AddCondition(internetCondition);
taskBuilder.AddCondition(internetCondition);
taskBuilder->AddCondition(internetCondition);
Registrera bakgrundsaktiviteten
Nu kan du registrera bakgrundsaktiviteten med metoden Registrera och bakgrundsaktiviteten startar inte förrän det angivna villkoret har uppfyllts.
Följande kod registrerar uppgiften och lagrar det resulterande BackgroundTaskRegistration-objektet:
BackgroundTaskRegistration task = taskBuilder.Register();
Windows::ApplicationModel::Background::BackgroundTaskRegistration task{ recurringTaskBuilder.Register() };
BackgroundTaskRegistration ^ task = taskBuilder->Register();
Anmärkning
Parametrar för registrering av bakgrundsaktiviteter verifieras vid tidpunkten för registreringen. Ett fel returneras om någon av registreringsparametrarna är ogiltiga. Se till att appen hanterar scenarier där registreringen av bakgrundsaktiviteter misslyckas – om appen i stället är beroende av att ha ett giltigt registreringsobjekt efter att ha försökt registrera en uppgift kan den krascha.
Använd flera villkor på din bakgrundsaktivitet
Om du vill lägga till flera villkor gör appen flera anrop till metoden AddCondition. Dessa anrop måste komma före uppgiftsregistreringen för att vara effektiva.
Anmärkning
Var noga med att inte lägga till motstridiga villkor i en bakgrundsaktivitet.
Följande kodfragment visar flera villkor i samband med att du skapar och registrerar en bakgrundsaktivitet.
// Set up the background task.
TimeTrigger hourlyTrigger = new TimeTrigger(60, false);
var recurringTaskBuilder = new BackgroundTaskBuilder();
recurringTaskBuilder.Name = "Hourly background task";
recurringTaskBuilder.TaskEntryPoint = "Tasks.ExampleBackgroundTaskClass";
recurringTaskBuilder.SetTrigger(hourlyTrigger);
// Begin adding conditions.
SystemCondition userCondition = new SystemCondition(SystemConditionType.UserPresent);
SystemCondition internetCondition = new SystemCondition(SystemConditionType.InternetAvailable);
recurringTaskBuilder.AddCondition(userCondition);
recurringTaskBuilder.AddCondition(internetCondition);
// Done adding conditions, now register the background task.
BackgroundTaskRegistration task = recurringTaskBuilder.Register();
// Set up the background task.
Windows::ApplicationModel::Background::TimeTrigger hourlyTrigger{ 60, false };
Windows::ApplicationModel::Background::BackgroundTaskBuilder recurringTaskBuilder;
recurringTaskBuilder.Name(L"Hourly background task");
recurringTaskBuilder.TaskEntryPoint(L"Tasks.ExampleBackgroundTaskClass");
recurringTaskBuilder.SetTrigger(hourlyTrigger);
// Begin adding conditions.
Windows::ApplicationModel::Background::SystemCondition userCondition{
Windows::ApplicationModel::Background::SystemConditionType::UserPresent };
Windows::ApplicationModel::Background::SystemCondition internetCondition{
Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
recurringTaskBuilder.AddCondition(userCondition);
recurringTaskBuilder.AddCondition(internetCondition);
// Done adding conditions, now register the background task.
Windows::ApplicationModel::Background::BackgroundTaskRegistration task{ recurringTaskBuilder.Register() };
// Set up the background task.
TimeTrigger ^ hourlyTrigger = ref new TimeTrigger(60, false);
auto recurringTaskBuilder = ref new BackgroundTaskBuilder();
recurringTaskBuilder->Name = "Hourly background task";
recurringTaskBuilder->TaskEntryPoint = "Tasks.ExampleBackgroundTaskClass";
recurringTaskBuilder->SetTrigger(hourlyTrigger);
// Begin adding conditions.
SystemCondition ^ userCondition = ref new SystemCondition(SystemConditionType::UserPresent);
SystemCondition ^ internetCondition = ref new SystemCondition(SystemConditionType::InternetAvailable);
recurringTaskBuilder->AddCondition(userCondition);
recurringTaskBuilder->AddCondition(internetCondition);
// Done adding conditions, now register the background task.
BackgroundTaskRegistration ^ task = recurringTaskBuilder->Register();
Anmärkningar
Anmärkning
Välj villkor för bakgrundsaktiviteten så att den bara körs när den behövs och inte körs när den inte ska göra det. Se SystemConditionType för beskrivningar av de olika villkoren för bakgrundsaktiviteter.
Relaterade ämnen
- Skapa och registrera en bakgrundsaktivitet som körs utanför processen
- Skapa och registrera en pågående bakgrundsaktivitet
- Deklarera bakgrundsaktiviteter i programmanifestet
- Hantera en avbruten bakgrundsaktivitet
- Övervaka förlopp och slutförande av bakgrundsaktiviteter
- Registrera en bakgrundsaktivitet
- Svara på systemhändelser med bakgrundsaktiviteter
- Uppdatera en levande panel från en bakgrundsprocess
- Använd en underhållsutlösare
- Kör en bakgrundsaktivitet på en timer-
- Riktlinjer för bakgrundsaktiviteter
- Felsöka en bakgrundsaktivitet
- Så här utlöser du paus-, återuppta- och bakgrundshändelser i UWP-appar (vid felsökning)