Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Lär dig hur du använder ApplicationTrigger- för att aktivera en bakgrundsaktivitet inifrån din app.
Ett exempel på hur du skapar en programutlösare finns i det här exemplet .
Det här avsnittet förutsätter att du har en bakgrundsaktivitet som du vill aktivera från ditt program. Om du inte redan har en bakgrundsaktivitet finns det en exempelbakgrundsaktivitet på BackgroundActivity.cs. Du kan också följa stegen i Skapa och registrera en bakgrundsuppgift utanför processen för att skapa en.
Varför använda en programutlösare
Använd en ApplicationTrigger- för att köra kod i en separat process från förgrundsappen. En ApplicationTrigger- är lämplig om din app har arbete som måste utföras i bakgrunden – även om användaren stänger förgrundsappen. Om bakgrundsarbetet ska stoppas när appen stängs eller ska kopplas till förgrundsprocessens tillstånd ska utökad körning i stället användas.
Skapa en programutlösare
Skapa en ny ApplicationTrigger. Du kan lagra den i ett fält som det görs i kodfragmentet nedan. Detta är för enkelhetens skull så att vi inte behöver skapa en ny instans senare när vi vill signalera utlösaren. Men du kan använda valfri ApplicationTrigger instans för att signalera utlösaren.
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
_AppTrigger = new ApplicationTrigger();
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
Windows::ApplicationModel::Background::ApplicationTrigger _AppTrigger;
// _AppTrigger is an ApplicationTrigger field defined at a scope that will keep it alive
// as long as you need to trigger the background task.
// Or, you could create a new ApplicationTrigger instance and use that when you want to
// trigger the background task.
ApplicationTrigger ^ _AppTrigger = ref new ApplicationTrigger();
(Valfritt) Lägga till ett villkor
Du kan skapa ett bakgrundsaktivitetsvillkor för att styra när aktiviteten körs. Ett villkor förhindrar att bakgrundsaktiviteten körs tills villkoret uppfylls. Mer information finns i Ange villkor för att köra en bakgrundsaktivitet.
I det här exemplet är villkoret inställt på InternetAvailable så att aktiviteten bara körs när internetåtkomsten är tillgänglig när den har utlösts. En lista över möjliga villkor finns i SystemConditionType.
SystemCondition internetCondition = new SystemCondition(SystemConditionType.InternetAvailable);
Windows::ApplicationModel::Background::SystemCondition internetCondition{
Windows::ApplicationModel::Background::SystemConditionType::InternetAvailable };
SystemCondition ^ internetCondition = ref new SystemCondition(SystemConditionType::InternetAvailable)
Mer detaljerad information om villkor och typer av bakgrundsutlösare finns i Support your app with background tasks.
Anropa RequestAccessAsync()
Innan du registrerar ApplicationTrigger bakgrundsaktivitet anropar du RequestAccessAsync för att fastställa vilken nivå av bakgrundsaktivitet som användaren tillåter eftersom användaren kan ha inaktiverat bakgrundsaktiviteten för din app. Mer information om hur användare kan styra inställningarna för bakgrundsaktivitet finns i Optimera bakgrundsaktivitet.
var requestStatus = await Windows.ApplicationModel.Background.BackgroundExecutionManager.RequestAccessAsync();
if (requestStatus != BackgroundAccessStatus.AlwaysAllowed)
{
// Depending on the value of requestStatus, provide an appropriate response
// such as notifying the user which functionality won't work as expected
}
Registrera bakgrundsaktiviteten
Registrera bakgrundsaktiviteten genom att anropa registreringsfunktionen för bakgrundsaktiviteten. Mer information om hur du registrerar bakgrundsaktiviteter och om du vill se definitionen av metoden RegisterBackgroundTask() i exempelkoden nedan finns Registrera en bakgrundsaktivitet.
Om du överväger att använda en programutlösare för att förlänga förgrundsprocessens livslängd bör du hellre använda Utökad Körning. Programutlösaren är utformad för att skapa en separat värdbaserad process att arbeta i. Följande kodfragment registrerar en out-of-process-bakgrundsutlösare.
string entryPoint = "Tasks.ExampleBackgroundTaskClass";
string taskName = "Example application trigger";
BackgroundTaskRegistration task = RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition);
std::wstring entryPoint{ L"Tasks.ExampleBackgroundTaskClass" };
std::wstring taskName{ L"Example application trigger" };
Windows::ApplicationModel::Background::BackgroundTaskRegistration task{
RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition) };
String ^ entryPoint = "Tasks.ExampleBackgroundTaskClass";
String ^ taskName = "Example application trigger";
BackgroundTaskRegistration ^ task = RegisterBackgroundTask(entryPoint, taskName, appTrigger, internetCondition);
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.
Utlösa bakgrundsaktiviteten
Innan du utlöser bakgrundsaktiviteten använder du BackgroundTaskRegistration för att kontrollera att bakgrundsaktiviteten är registrerad. Ett bra tillfälle att kontrollera att alla dina bakgrundsaktiviteter är registrerade är när appen startas.
Utlös bakgrundsaktiviteten genom att anropa ApplicationTrigger.RequestAsync. Alla instanser av ApplicationTrigger fungerar.
Observera att ApplicationTrigger.RequestAsync inte kan anropas från själva bakgrundsaktiviteten eller när appen är i bakgrundstillståndet (se Applivscykel för mer information om programtillstånd). Den kan returnera DisabledByPolicy- om användaren har angett energi- eller sekretesspolicyer som hindrar appen från att utföra bakgrundsaktivitet. Dessutom kan bara en AppTrigger köras i taget. Om du försöker köra en AppTrigger medan en annan redan körs, returnerar funktionen CurrentlyRunning.
var result = await _AppTrigger.RequestAsync();
Hantera resurser för bakgrundsaktiviteten
Använd BackgroundExecutionManager.RequestAccessAsync för att avgöra om användaren har bestämt att appens bakgrundsaktivitet ska begränsas. Var medveten om din batterianvändning och kör bara i bakgrunden när det är nödvändigt att slutföra en åtgärd som användaren vill ha. Mer information om hur användare kan styra inställningarna för bakgrundsaktivitet finns i Optimera bakgrundsaktivitet.
- Minne: Att justera appens minnes- och energianvändning är nyckeln till att säkerställa att operativsystemet tillåter att bakgrundsaktiviteten körs. Använd API:erna för minneshantering för att se hur mycket minne bakgrundsaktiviteten använder. Ju mer minne din bakgrundsaktivitet använder, desto svårare är det för operativsystemet att hålla den igång när en annan app är i förgrunden. Användaren har slutligen kontroll över all bakgrundsaktivitet som appen kan utföra och har insyn i hur din app påverkar batterianvändningen.
- CPU-tid: Bakgrundsprocesser begränsas av hur mycket klocktid de får, baserat på utlösartyp. Bakgrundsuppgifter som utlöses av programutlösaren är begränsade till cirka 10 minuter.
Se Stöd din app med bakgrundsuppgifter för de resursbegränsningar som gäller för bakgrundsuppgifter.
Anmärkningar
Från och med Windows 10 är det inte längre nödvändigt för användaren att lägga till din app på låsskärmen för att kunna använda bakgrundsuppgifter.
En bakgrundsaktivitet körs endast med hjälp av en ApplicationTrigger- om du har anropat RequestAccessAsync först.
Relaterade ämnen
- Riktlinjer för bakgrundsaktiviteter
- bakgrundsuppgift kodexempel
- Skapa och registrera en pågående bakgrundsaktivitet.
- Skapa och registrera en bakgrundsaktivitet som körs utanför processen
- Felsöka en bakgrundsaktivitet
- Deklarera bakgrundsaktiviteter i programmanifestet
- Ledigt minne när appen flyttas till bakgrunden
- Hantera en avbruten bakgrundsaktivitet
- Så här utlöser du paus-, återuppta- och bakgrundshändelser i UWP-appar (vid felsökning)
- Övervaka förlopp och slutförande av bakgrundsaktiviteter
- Skjuta upp avstängning av app med förlängd exekveringstid
- Registrera en bakgrundsaktivitet
- Svara på systemhändelser med bakgrundsaktiviteter
- Ange villkor för att köra en bakgrundsaktivitet
- Uppdatera en levande panel från en bakgrundsprocess
- Använd en underhållsutlösare