Dela via


Använda en underhållsutlösare

viktiga API:er

Lär dig hur du använder klassen MaintenanceTrigger för att köra enkel kod i bakgrunden medan enheten är ansluten.

Skapa ett underhållsutlösarobjekt

Det här exemplet förutsätter att du har enkel kod som du kan köra i bakgrunden för att förbättra appen medan enheten är ansluten. Det här avsnittet fokuserar på MaintenanceTrigger, som liknar SystemTrigger.

Mer information om hur du skriver en bakgrundsaktivitetsklass finns i Skapa och registrera en pågående bakgrundsaktivitet eller Skapa och registrera en bakgrundsaktivitet som inte är bearbetad.

Skapa ett nytt MaintenanceTrigger-objekt . Den andra parametern , OneShot, anger om underhållsaktiviteten bara ska köras en gång eller fortsätta att köras med jämna mellanrum. Om OneShot är inställt på true anger den första parametern (FreshnessTime) antalet minuter att vänta innan bakgrundsaktiviteten schemaläggs. Om OneShot är inställt på false anger FreshnessTime hur ofta bakgrundsaktiviteten ska köras.

Anmärkning

Om FreshnessTime är inställt på mindre än 15 minuter utlöses ett undantag när du försöker registrera bakgrundsuppgiften.

Den här exempelkoden skapar en utlösare som körs en gång i timmen.

uint waitIntervalMinutes = 60;
MaintenanceTrigger taskTrigger = new MaintenanceTrigger(waitIntervalMinutes, false);
uint32_t waitIntervalMinutes{ 60 };
Windows::ApplicationModel::Background::MaintenanceTrigger taskTrigger{ waitIntervalMinutes, false };
unsigned int waitIntervalMinutes = 60;
MaintenanceTrigger ^ taskTrigger = ref new MaintenanceTrigger(waitIntervalMinutes, false);

(Valfritt) Lägga till ett villkor

  • Om det behövs skapar du ett bakgrundsaktivitetsvillkor för att styra när aktiviteten körs. Ett villkor förhindrar att bakgrundsaktiviteten körs tills villkoret är uppfyllt . Mer information finns i Ange villkor för att köra en bakgrundsaktivitet

I det här exemplet är villkoret inställt på InternetTillgängligt så att underhåll körs när Internet är tillgängligt (eller när det blir tillgängligt). En lista över möjliga bakgrundsaktivitetsvillkor finns i SystemConditionType.

Följande kod lägger till ett villkor i underhållsuppgiftsverktyget:

SystemCondition exampleCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition exampleCondition{
    Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ exampleCondition = ref new SystemCondition(SystemConditionType::InternetAvailable);

Registrera bakgrundsaktiviteten

  • Registrera bakgrundsaktiviteten genom att anropa registreringsfunktionen för bakgrundsaktiviteten. Mer information om hur du registrerar bakgrundsaktiviteter finns i Registrera en bakgrundsaktivitet.

Följande kod registrerar underhållsuppgiften. Observera att det förutsätter att bakgrundsaktiviteten körs i en separat process från appen eftersom den anger entryPoint. Om bakgrundsaktiviteten körs i samma process som din app, anger du inte entryPoint.

string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName   = "Maintenance background task example";

BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Maintenance background task example" };

Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
    RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName   = "Maintenance background task example";

BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, taskTrigger, exampleCondition);

Anmärkning

För alla enhetsfamiljer utom skrivbordet kan bakgrundsuppgifter avslutas om enheten får ont om minne. Om en out of memory-exception inte visas, eller om appen inte hanterar den, avslutas bakgrundsaktiviteten utan förvarning och utan att händelsen OnCanceled aktiveras. Detta hjälper till att säkerställa användarupplevelsen av appen i förgrunden. Bakgrundsaktiviteten bör utformas för att hantera det här scenariot.

Anmärkning

Universella Windows Platform-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 till din app måste du anropa RemoveAccess och sedan anropa RequestAccessAsync när appen startas efter att den har uppdaterats. Mer information finns i Riktlinjer för bakgrundsaktiviteter.

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.