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
Det här avsnittet visar hur du skapar och registrerar en bakgrundsaktivitet som körs i samma process som din app.
Bakgrundsaktiviteter som körs i processen är enklare att implementera än bakgrundsaktiviteter utanför processen. De är dock mindre motståndskraftiga. Om koden som körs i en pågående bakgrundsaktivitet kraschar kommer den att ta bort din app. Observera också att DeviceUseTrigger, DeviceServicingTrigger och IoTStartupTask inte kan användas med in-process-modellen. Det går inte heller att aktivera en VoIP-bakgrundsaktivitet i ditt program. Dessa utlösare och aktiviteter stöds fortfarande med hjälp av modellen för bakgrundsaktiviteter som körs utanför processen.
Tänk på att bakgrundsaktivitet kan avslutas även när den körs i appens förgrundsprocess om den överskrider tidsbegränsningar för körning. I vissa syften är motståndskraften att separera arbete till en bakgrundsaktivitet som körs i en separat process fortfarande användbar. Att hålla bakgrundsarbete separat från förgrundsprogrammet kan vara det bästa alternativet för arbete som inte kräver kommunikation med förgrundsprogrammet.
Grundläggande principer
Den processbaserade modellen förbättrar programmets livscykel med förbättrade meddelanden för när din app är i förgrunden eller i bakgrunden. Två nya händelser är tillgängliga från programobjektet för dessa övergångar: EnteredBackground och LeavingBackground. Dessa händelser passar in i programmets livscykel baserat på programmets synlighetstillstånd Läs mer om dessa händelser och hur de påverkar programmets livscykel applivscykeln.
På hög nivå hanterar du händelsen EnteredBackground för att köra koden som körs medan appen körs i bakgrunden och hanterar LeavingBackground- för att veta när appen har flyttats till förgrunden.
Registrera din bakgrundsaktivitetsutlösare
Bakgrundsaktivitet i processen registreras ungefär på samma sätt som bakgrundsaktivitet utanför processen. Alla bakgrundsutlösare börjar med registrering med hjälp av BackgroundTaskBuilder. Byggaren gör det enkelt att registrera en bakgrundsaktivitet genom att ange alla nödvändiga värden på ett ställe:
var builder = new BackgroundTaskBuilder();
builder.Name = "My Background Trigger";
builder.SetTrigger(new TimeTrigger(15, true));
// Do not set builder.TaskEntryPoint for in-process background tasks
// Here we register the task and work will start based on the time trigger.
BackgroundTaskRegistration task = builder.Register();
Anmärkning
Universella Windows-appar måste anropa RequestAccessAsync innan du registrerar någon av typerna av bakgrundsutlösare. För att säkerställa att den universella Windows-appen fortsätter att köras korrekt när du har släppt en uppdatering måste du anropa RemoveAccess och sedan anropa RequestAccessAsync- när appen startas efter att ha uppdaterats. Mer information finns i Riktlinjer för bakgrundsaktiviteter.
För pågående bakgrundsaktiviteter anger du inte TaskEntryPoint. Om du lämnar den tom aktiveras standardstartpunkten, en ny skyddad metod i programobjektet som heter OnBackgroundActivated().
När en utlösare har registrerats utlöses den baserat på vilken typ av utlösare som angetts i metoden SetTrigger. I exemplet ovan används en TimeTrigger-, som utlöses femton minuter från den tidpunkt då den registrerades.
Lägg till ett villkor för att styra när aktiviteten ska köras (valfritt)
Du kan lägga till ett villkor för att styra när aktiviteten ska köras när utlösarhändelsen inträffar. Om du till exempel inte vill att aktiviteten ska köras förrän användaren finns använder du villkoret UserPresent. En lista över möjliga villkor finns i SystemConditionType.
Följande exempelkod tilldelar ett villkor som kräver att användaren finns:
builder.AddCondition(new SystemCondition(SystemConditionType.UserPresent));
Placera din bakgrundsaktivitetskod i OnBackgroundActivated()
Placera din bakgrundsaktivitetskod i OnBackgroundActivated för att svara på bakgrundsutlösaren när den utlöses. OnBackgroundActivated kan behandlas precis som IBackgroundTask.Run. Metoden har en BackgroundActivatedEventArgs parameter, som innehåller allt som metoden Kör levererar. Till exempel i App.xaml.cs:
using Windows.ApplicationModel.Background;
...
sealed partial class App : Application
{
...
protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
{
base.OnBackgroundActivated(args);
IBackgroundTaskInstance taskInstance = args.TaskInstance;
DoYourBackgroundWork(taskInstance);
}
}
Ett mer omfattande OnBackgroundActivated- exempel finns i Konvertera en apptjänst för att köras i samma process som värdappen.
Hantera förlopp och slutförande av bakgrundsaktivitet
Aktivitetsförlopp och slutförande kan övervakas på samma sätt som för bakgrundsaktiviteter med flera processer (se Övervaka bakgrundsaktivitetsförlopp och slutförande), men du kommer förmodligen att upptäcka att du enklare kan spåra dem med hjälp av variabler för att spåra status för förlopp eller slutförande i din app. Det här är en av fördelarna med att ha din bakgrundsaktivitetskod igång i samma process som din app.
Hantera annullering av bakgrundsaktivitet
Bakgrundsaktiviteter som är in-process avbryts på samma sätt som bakgrundsaktiviteter utanför processen (se Hantera en avbruten bakgrundsaktivitet). Tänk på att din BackgroundActivated händelsehanterare måste avslutas innan annulleringen sker, annars avslutas hela processen. Om förgrundsappen stängs oväntat när du avbryter bakgrundsaktiviteten kontrollerar du att hanteraren avslutades innan annulleringen inträffade.
Manifestet
Till skillnad från bakgrundsuppgifter utanför processen behöver du inte lägga till bakgrundsuppgiftsinformation i paketmanifestet för att kunna köra bakgrundsuppgifter i processen.
Sammanfattning och nästa steg
Nu bör du förstå grunderna i hur du skriver en pågående bakgrundsaktivitet.
Se följande relaterade ämnen för API-referens, konceptuell vägledning för bakgrundsaktiviteter och mer detaljerade instruktioner för att skriva appar som använder bakgrundsuppgifter.
Relaterade ämnen
Detaljerade instruktionsämnen för bakgrundsaktiviteter
- Konvertera en bakgrundsaktivitet utanför processen till en bakgrundsaktivitet inom processen
- Skapa och registrera en bakgrundsaktivitet som körs utanför processen
- Spela upp media i bakgrunden
- Svara på systemhändelser med bakgrundsaktiviteter
- Registrera en bakgrundsaktivitet
- Ange villkor för att köra en bakgrundsaktivitet
- Använd en underhållsutlösare
- Hantera en avbruten bakgrundsaktivitet
- Övervaka förlopp och slutförande av bakgrundsaktiviteter
- Kör en bakgrundsaktivitet på en timer-
Vägledning för bakgrundsuppgifter
- 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)
API-referens för bakgrundsprocesser