Supporto dell'app con attività in background (HTML)
[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]
Gli argomenti contenuti in questa sezione mostrano come eseguire codice leggero personalizzato in background in risposta a trigger con le attività in background. Le attività in background sono file JavaScript separati che il sistema operativo esegue in background. Puoi usare le attività in background per offrire funzionalità quando l'app è sospesa o non è in esecuzione. In JavaScript puoi anche eseguire attività in background mediante un timer.
Le attività in background usano lo spazio dei nomi Windows.UI.WebUI.WebUIBackgroundTaskInstance per acquisire informazioni sulla loro istanza corrente. Puoi registrare le attività in background usando un oggetto BackgroundTaskBuilder. Il file JavaScript dell'attività in background è specificato come punto di ingresso durante la registrazione dell'attività in background.
Per imparare velocemente a creare un'attività in background, vedi Guida introduttiva: Creare e registrare un'attività in background.
Attività in background per eventi di sistema
La tua app può rispondere a eventi generati del sistema registrando un'attività in background con SystemTrigger. Un'app può usare uno qualsiasi dei seguenti trigger di eventi di sistema (definiti in SystemTriggerType) senza essere posizionata nella schermata di blocco.
Nome del trigger | Descrizione |
---|---|
InternetAvailable |
Internet diventa disponibile. |
NetworkStateChange |
Si verifica una modifica della rete, ad esempio relativa al costo o alla connettività. |
OnlineIdConnectedStateChange |
L'ID online associato all'account cambia. |
SmsReceived |
Viene ricevuto un nuovo SMS da un dispositivo mobile a banda larga installato. |
TimeZoneChange |
Il fuso orario cambia, ad esempio quando il sistema regola l'orologio per l'applicazione dell'ora legale. |
Per altre informazioni, vedi Come rispondere agli eventi di sistema con le attività in background.
Condizioni per le attività in background
Puoi stabilire quando eseguire l'attività in background, anche dopo l'attivazione, aggiungendo una condizione. Dopo l'attivazione, l'attività in background viene eseguita solo quando sono soddisfatte tutte le condizioni specificate. Puoi usare le condizioni seguenti, rappresentate dall'enumerazione SystemConditionType.
Nome della condizione | Descrizione |
---|---|
InternetAvailable | Internet deve essere disponibile. |
InternetNotAvailable | Internet non deve essere disponibile. |
SessionConnected | La connessione alla sessione deve essere stabilita. |
SessionDisconnected | La connessione alla sessione deve essere terminata. |
Per altre informazioni, vedi Come impostare le condizioni per l'esecuzione di un'attività in background.
Requisiti del manifesto dell'app
Prima che l'app possa registrare correttamente un'attività in background, è necessario dichiararla nel manifesto dell'applicazione. Per altre informazioni, vedi Come dichiarare le attività in background nel manifesto dell'applicazione.
Attività in background per le app che supportano la schermata di blocco
Le app possono essere posizionate nella schermata di blocco per mostrare informazioni in tempo reale all'utente. I trigger in tempo reale seguenti possono essere usati per eseguire codice personalizzato leggero in background per le app nella schermata di blocco:
Canale di controllo: Le attività in background possono mantenere attiva una connessione e ricevere messaggi sul canale di controllo tramite ControlChannelTrigger. Per altre informazioni, vedi l'argomento relativo a come usare il trigger del canale di controllo. Tieni presente che le attività in background del canale di controllo possono essere implementate solo in C# o C++. ControlChannelTrigger non è supportato in Windows Phone.
Timer: Le attività in background possono essere eseguite con una frequenza massima di 15 minuti ed essere impostate per l'esecuzione a un'ora specifica tramite TimeTrigger. Per altre informazioni, vedi Come eseguire un'attività in background mediante timer.
Notifica push: Le attività in background rispondono a PushNotificationTrigger per ricevere notifiche push non elaborate. Per altre informazioni, vedi Come ricevere notifiche non elaborate.
Nota Solo app di Windows Store. L'utente deve posizionare l'app nella schermata di blocco prima che l'app possa usare queste attività in background. Un'app può richiedere l'accesso alla schermata di blocco chiamando RequestAccessAsync. In questo modo viene presentata una finestra di dialogo che richiede all'utente di consentire o meno all'app di accedere alla schermata di blocco. Un'app può richiedere l'accesso alla schermata di blocco una sola volta. Qualsiasi chiamata successiva a RequestAccessAsync viene ignorata.
Nota
Le app di Windows Phone Store possono usare tutti i trigger in background supportati senza essere aggiunte alla schermata di blocco. Un'app telefonica deve tuttavia chiamare RequestAccessAsync prima di registrare qualsiasi tipo di trigger in background.
Per garantire che l'app di Windows Phone continui a funzionare correttamente dopo il rilascio di un aggiornamento, devi chiamare RemoveAccess e poi chiamare RequestAccessAsync all'avvio dell'app dopo l'aggiornamento. Per altre informazioni, vedi Linee guida per le attività in background (app di Windows Runtime).
Trigger di eventi di sistema per le app che supportano la schermata di blocco
Nota L'enumerazione SystemTriggerType include i trigger di eventi di sistema seguenti che possono essere usati solo da app che supportano la schermata di blocco. Un'app deve essere posizionata nella schermata di blocco prima che possa registrare un'attività in background con uno di questi trigger di eventi di sistema.
Nome del trigger | Descrizione |
---|---|
UserPresent |
L'attività in background viene attivata quando l'utente diventa presente. |
UserAway |
L'attività in background viene attivata quando l'utente diventa assente. |
ControlChannelReset |
L'attività in background viene attivata quando un canale di controllo viene ripristinato. |
SessionConnected |
L'attività in background viene attivata quando la sessione è connessa. |
Anche i trigger di eventi di sistema seguenti possono essere usati per le app che supportano la schermata di blocco. Questi trigger possono essere registrati anche quando l'app non si trova nella schermata di blocco e in questo modo è possibile rilevare quando l'utente sposta l'app nella schermata di blocco o la rimuove da questa schermata.
Nome del trigger | Descrizione |
---|---|
LockScreenApplicationAdded |
Un riquadro dell'app viene aggiunto alla schermata di blocco. |
LockScreenApplicationRemoved |
Un riquadro dell'app viene rimosso dalla schermata di blocco. |
Vincoli delle risorse per le attività in background
Le attività in background sono leggere. La limitazione dell'esecuzione in background assicura una migliore esperienza utente con le app in primo piano e garantisce una maggiore durata della batteria. A tale scopo, è possibile applicare vincoli delle risorse alle attività in background:
L'utilizzo della CPU è limitato come indicato di seguito.
Quota di utilizzo CPU Tempo di aggiornamento App Windows non nella schermata di blocco 1 secondo
2 ore
App Windows nella schermata di blocco 2 secondi
15 minuti
App per Windows Phone 2 secondi
15 minuti
Nei sistemi alimentati a batteria (alimentazione CC) è previsto anche un limite di utilizzo dei dati di rete per le attività in background. Questo limite è in funzione della quantità di energia usata dall'interfaccia di rete e quindi varia in base al dispositivo e all'ambiente di rete, ma è possibile stimarlo.
La tabella seguente offre una caratterizzazione della velocità di trasmissione dei dati di rete, presupponendo una rete WiFi con vincoli di risorse che supporta una velocità di trasmissione dei dati media di 1 Mbps. Per stimare il limite corretto, moltiplica per la velocità Mbps (megabit al secondo) media della connessione. Ad esempio, un'app può usare 25 MB di dati ogni 2 ore su una connessione WiFi da 10 Mbps se è posizionata nella schermata di blocco. Per questa interfaccia WiFi si presuppongono interferenze minime.
Periodo di aggiornamento 15 minuti 2 ore Ogni giorno Limite di dati (nella schermata di blocco) 0,469 MB N/D 45 MB Limite di dati (non nella schermata di blocco) N/D 0,625 MB 7,5 MB Nota Il limite di utilizzo dei dati di rete è superiore quando il dispositivo è collegato alla rete elettrica, ma la quota di utilizzo della CPU è ancora valida. In modo simile, i vincoli per le risorse di rete e CPU sono sospesi per le attività in background di un'app durante le interazioni dell'utente con l'app in primo piano.
Vincoli aggiuntivi delle risorse per le attività in background per le app di Windows Phone Store
Oltre ai vincoli delle risorse descritti nella sezione precedente, per le attività in background nelle app di Windows Phone Store sono previsti i seguenti vincoli aggiuntivi.
Vincoli relativi alla memoria
Per via dei vincoli delle risorse per il fattore formato telefonico, soprattutto per i dispositivi con memoria ridotta, le attività in background per le app di Windows Phone prevedono un limite di memoria che definisce la quantità massima di memoria che può essere usata dall'attività in background. Se l'attività in background supera tale limite, verrà terminata immediatamente. L'allocazione della memoria dipende dal tipo di attività in background, nonché dalla memoria di sistema totale del dispositivo in cui viene eseguita. In fase di sviluppo e testing dell'app devi tenere conto di tali limiti. Puoi inoltre usare le API MemoryManager per conoscere i valori attuali relativi all'uso e al limite della memoria, in modo da regolarne l'uso in fase di esecuzione. La tabella seguente elenca la capacità di memoria, in megabyte, per i tipi di attività in background specificati relativamente a diverse quantità di memoria di sistema totale disponibile nel dispositivo.
Tipo di attività in background | 512 MB | 1 GB | 2 GB o superiore |
---|---|---|---|
Posizione | 16 | 30 | 40 |
Bluetooth | 16 | 16 | 16 |
Manutenzione completata | 10 | 10 | 10 |
Altre attività in background | 16 | 30 | 40 |
Limite durante il debug | 30 | 40 | 50 |
Limite per dispositivo per le app con attività in background in dispositivi con memoria ridotta
Nei telefoni con una memoria di 512 MB è previsto un limite relativo al numero di app che possono essere installate in un dispositivo e possono usare attività in background in un determinato momento. Se tale limite viene superato, la chiamata a RequestAccessAsync, necessaria per registrare tutte le attività in background in Windows Phone, non riuscirà.
Risparmio batteria
In Windows Phone, se la funzione Risparmio batteria è attivata, le attività in background non verranno eseguite quando il dispositivo non è connesso a una fonte di alimentazione esterna e la batteria scende al di sotto di una determinata soglia. In questo caso, potrai comunque registrare le attività in background.
Trigger di manutenzione
Puoi anche configurare l'app per eseguire attività con una frequenza massima di 15 minuti tramite il trigger di manutenzione. Invece di richiedere il posizionamento nella schermata di blocco, le attività di manutenzione vengono eseguite solo se il dispositivo è collegato all'alimentazione da rete elettrica. Per altre informazioni, vedi Come usare i trigger di manutenzione.
Attività in background per sensori e dispositivi
La tua app può accedere a sensori e periferiche da un'attività in background con la classe DeviceUseTrigger. Puoi usare questo trigger per le operazioni di lunga durata, ad esempio sincronizzazione dei dati o monitoraggio. Diversamente dalle attività per gli eventi di sistema, un'attività DeviceUseTrigger può essere attivata solo quando l'app è eseguita in primo piano e su di essa non possono essere impostate condizioni. A seconda di dove è eseguita (PC o telefono), un'attività di background DeviceUseTrigger supporta diverse API ed è soggetta a diversi criteri. Per altre informazioni su queste differenze, vedi Accesso a sensori e dispositivi da un'attività in background.
Alcune operazioni critiche relative al dispositivo, ad esempio gli aggiornamenti del firmware che richiedono una lunga esecuzione, non possono essere effettuate con DeviceUseTrigger. Queste operazioni possono essere effettuate solo sul PC ed esclusivamente mediante un'app con privilegi che usi DeviceServicingTrigger. Un'app con privilegi è un'app che il produttore del dispositivo ha autorizzato a eseguire tali operazioni. Per specificare quale app è stata eventualmente designata come app con privilegi per un dispositivo, vengono usati i metadati di quest'ultimo. Per altre informazioni, vedi l'argomento relativo alla sincronizzazione e aggiornamento dei dispositivi per app di Windows Store per dispositivo.
Gestione di attività in background
Tramite gli eventi e l'archiviazione locale, le attività in background possono comunicare all'app informazioni su stato, completamento e annullamento. Inoltre, la tua app è in grado di intercettare le eccezioni generate da un'attività in background e gestire la registrazione delle attività in background durante gli aggiornamenti dell'app. Per altre informazioni, vedi:
Come gestire un'attività in background annullata
Come ottenere l'elenco delle attività in background in sospeso
Come monitorare l'avanzamento e il completamento delle attività in background
Come usare il trigger ServicingComplete
Argomenti correlati
Informazioni concettuali per il multitasking in Windows 8
Introduzione alle attività in background
Indicazioni sull'interfaccia utente per la schermata di blocco
Visualizzazione di riquadri nella schermata di blocco
Linee guida ed elenco di controllo per i riquadri della schermata di blocco
Informazioni correlate sulle attività in background
Linee guida ed elenco di controllo per le attività in background
Come eseguire il debug di un'attività in background
Accesso a sensori e dispositivi da un'attività in background
Sincronizzazione e aggiornamento dei dispositivi per app di Windows Store per dispositivo.