Limitazioni relative all'avvio di attività in background

Android 10 (livello API 29) e superiori impostano limitazioni relative a quando le app possono avviare attività quando l'app viene eseguita in background. Queste restrizioni consentono all'utente di ridurre al minimo le interruzioni e a mantenere un maggiore controllo su ciò che viene mostrato sullo schermo.

Questa guida presenta le notifiche come alternativa per avviare attività in background. e i casi specifici in cui la restrizione non si applica.

Mostra invece notifiche

In quasi tutti i casi, le app in background devono visualizzare notifiche urgenti per fornire informazioni urgenti all'utente, anziché avviare direttamente un'attività. Queste notifiche includono la gestione di una telefonata in arrivo o una sveglia attiva.

Questo sistema di avvisi e promemoria basato su notifiche offre diversi vantaggi per gli utenti:

  • Quando utilizza il dispositivo, l'utente vede una notifica che gli consente di rispondere. L'utente mantiene il contesto attuale e ha il controllo sui contenuti visualizzati sullo schermo.
  • Le notifiche urgenti rispettano le regole Non disturbare dell'utente. Ad esempio, quando la modalità Non disturbare è attivata, gli utenti potrebbero consentire solo le chiamate da contatti specifici o da chiamanti ripetuti.
  • Quando lo schermo del dispositivo è spento, l'intent a schermo intero viene avviato immediatamente.
  • Nella schermata Impostazioni del dispositivo, l'utente può vedere quali app hanno inviato notifiche di recente, anche da canali di notifica specifici. Da questa schermata l'utente può controllare le proprie preferenze di notifica.

Quando le app possono avviare attività

Le app eseguite su Android 10 o versioni successive possono avviare attività quando vengono soddisfatte una o più delle seguenti condizioni:

  • L'app ha una finestra visibile, ad esempio un'attività in primo piano.
  • L'app ha un'attività nello stack posteriore dell'attività in primo piano.
  • L'app ha un'attività nello stack posteriore di un'attività esistente nella schermata Recenti.

  • L'app ha un'attività iniziata molto di recente.

  • L'app chiamata finish() per un'attività molto recente. Questo si applica solo quando l'app presentava un'attività in primo piano o un'attività nello stack posteriore dell'attività in primo piano al momento della chiamata di finish().

  • L'app dispone di uno dei seguenti servizi vincolati dal sistema. Questi servizi potrebbero dover avviare una UI.

  • L'app ha un servizio associato a un'altra app visibile. Per poter avviare le attività, l'app associata al servizio deve rimanere visibile in background.

  • L'app riceve una notifica PendingIntent dal sistema. Nel caso di intent in attesa per servizi e ricevitori di trasmissioni, l'app può avviare attività per alcuni secondi dopo l'invio dell'intent in sospeso.

  • L'app riceve un PendingIntent che viene inviato da un'altra app visibile.

  • L'app riceve una trasmissione di sistema in cui è previsto il lancio di una UI. Alcuni esempi sono ACTION_NEW_OUTGOING_CALL e SECRET_CODE_ACTION. L'app può avviare attività per alcuni secondi dopo l'invio della trasmissione.

  • L'app viene associata a un dispositivo hardware companion tramite l'API CompanionDeviceManager. Questa API consente all'app di avviare attività in risposta alle azioni che l'utente esegue su un dispositivo accoppiato.

  • L'app è un controller dei criteri dei dispositivi in esecuzione in modalità proprietario del dispositivo. Esempi di casi d'uso includono dispositivi aziendali completamente gestiti e dispositivi dedicati come la segnaletica digitale e i kiosk.

  • All'app viene concessa l'autorizzazione SYSTEM_ALERT_WINDOW dall'utente.