Bucket app standby

Android 9 (livello API 28) e versioni successive supportano i bucket di standby delle app. Standby delle app I bucket aiutano il sistema a dare la priorità alle app di risorse in base a come di recente e la frequenza di utilizzo delle app. In base ai modelli di utilizzo delle app, l'app viene inserita in uno dei cinque bucket di priorità. Il sistema limita il dispositivo e risorse disponibili per ogni app in base al bucket in cui si trova l'app.

Bucket di priorità

Il sistema assegna dinamicamente ogni app a un bucket di priorità, riassegnando le app in base alle esigenze. Il sistema potrebbe basarsi su un'app precaricata che utilizza un apprendono per determinare la probabilità di utilizzo di ogni app e le assegna ai bucket appropriati.

Se l'app di sistema non è presente su un dispositivo, per impostazione predefinita il sistema imposta l'ordinamento app in base alla data di utilizzo recente. Le app più attive sono assegnate ai bucket che danno loro priorità più elevata, rendendo più risorse di sistema disponibili per l'app. In particolare, il bucket determina la frequenza vengono eseguiti i job dell'app e la frequenza con cui l'app può attivare gli allarmi. Queste restrizioni si applicano solo quando il dispositivo è alimentato a batteria. Mentre il dispositivo è in carica, il sistema non impone queste restrizioni.

.

I bucket di priorità sono i seguenti:

  • Attiva. L'app è in uso o è stata usata molto di recente.
  • Insieme di lavoro: l'app è in uso.
  • Frequente: l'app viene utilizzata spesso, ma non ogni giorno.
  • Rara. L'app non viene utilizzata di frequente.
  • Con limitazioni: l'app consuma molte risorse di sistema o potrebbe presentare comportamenti indesiderati.

Oltre a questi bucket di priorità, esiste un bucket never speciale per di app installate, ma mai eseguite. Il sistema impone severe restrizioni queste app.

Le seguenti descrizioni sono relative al caso non predittivo. Al contrario, quando utilizza il machine learning per prevedere il comportamento, i bucket vengono prevedere le azioni successive dell'utente piuttosto che basarsi sull'utilizzo recente. Per Ad esempio, un'app usata di recente potrebbe finire nel bucket raro perché learning prevede che l'app potrebbe non essere usata per diverse ore.

Sistema attivo

Un'app è nel bucket attivo mentre è in uso, è stata utilizzata molto di recente o quando esegue una delle seguenti operazioni:

  • Avvia un'attività.
  • Esegue un servizio in primo piano a lunga esecuzione.
  • Viene toccato dall'utente da una notifica.

Se un'app si trova nel bucket attivo, il sistema non applica alcuna limitazione i lavori o le sveglie dell'app.

L'interazione dell'utente assegna le app come attive

Su Android 9 (livello API 28) e versioni successive, quando l'utente interagisce con la tua app in alcuni modi, il sistema inserisce temporaneamente l'app nel bucket attivo. Quando l'utente smette di interagire con la tua app, il sistema la inserisce in una in base alla cronologia di utilizzo.

Di seguito sono riportati alcuni esempi di interazioni che attivano questo comportamento del sistema:

  • L'utente tocca una notifica inviata dalla tua app.

  • L'utente interagisce con un servizio in primo piano nella tua app toccando un contenuti multimediali .

  • L'utente si connette alla tua app mentre interagisce con Android Automotive Sistema operativo, in cui la tua app utilizza un servizio in primo piano o CONNECTION_TYPE_PROJECTION

Insieme di lavoro

Un'app si trova nel bucket set di lavoro se viene eseguita spesso, ma non è attiva. Ad esempio, è probabile che un'app di social media che l'utente lancia quasi ogni giorno nel set di lavoro. Le app vengono promosse nel bucket del set di lavoro anche se perché vengono usate indirettamente.

Se un'app fa parte del set di lavoro, il sistema impone restrizioni lievi sul suo di eseguire job e attivare gli allarmi. Per maggiori dettagli, vedi Gestione dell'alimentazione limitazioni.

Spesso

Un'app si trova nel bucket frequent se viene utilizzata regolarmente, ma non necessariamente ogni giorno. Ad esempio, un'app di monitoraggio dell'allenamento che l'utente esegue in palestra. potrebbe trovarsi nel bucket frequente.

Se un'app si trova nel bucket frequente, il sistema impone restrizioni più severe alle di eseguire job e attivare gli allarmi. Per maggiori dettagli, vedi Gestione dell'alimentazione limitazioni.

Rara

Un'app si trova nel bucket rare se non viene utilizzata spesso. Ad esempio, un hotel che l'utente esegue soltanto durante il soggiorno nell'hotel potrebbe essere nella rara app di sincronizzare la directory di una VM con un bucket.

Se un'app si trova nel bucket raro, il sistema impone restrizioni rigide ai suoi di eseguire job e attivare gli allarmi. Il sistema limita anche la capacità dell'app per connettersi a internet. Per maggiori dettagli, vedi Gestione dell'alimentazione limitazioni.

Con restrizioni

Questo bucket, aggiunto in Android 12 (livello API 31), ha la priorità più bassa e restrizioni più elevate di tutti i bucket. Il sistema considera le caratteristiche comportamento dell'utente, ad esempio la frequenza con cui l'utente interagisce, per decidere inserisci la tua app nel bucket con restrizioni.

Su Android 13 (livello API 33) e versioni successive, a meno che la tua app non sia idonea per un esenzione, il sistema inserisce la tua app nel bucket con limitazioni nella le seguenti situazioni:

  • L'utente non interagisce con la tua app per un numero specifico di giorni. Attivato Android 12 (livello API 31) e 12L (livello API 32), il numero di giorni è 45. Android 13 riduce il numero di giorni a 8.

  • La tua app richiama un numero eccessivo di trasmissioni o associazioni in un periodo di 24 ore.

Se il sistema inserisce la tua app nel bucket con limitazioni: con limitazioni:

  • Puoi eseguire job una volta al giorno in una sessione in batch di 10 minuti. Durante sessione, il sistema raggruppa i job della tua app con quelli di altre app di lavoro.
    • I job con limitazioni non vengono eseguiti da soli. Deve essere presente almeno uno a un altro job in esecuzione o in attesa, che può includere altro lavoro.
  • La tua app può eseguire meno job rapidi rispetto a quando il sistema inserisce la tua app in un bucket meno restrittivo.
  • La tua app può attivare una sveglia al giorno. Questo allarme può essere un sveglia o sveglia inesatta.
di Gemini Advanced.

Esenzioni dal bucket limitato

I seguenti tipi di app sono esenti dall'ingresso nel bucket limitato e per bypassare l'attivatore di inattività, anche su Android 12 e versioni successive:

valuta il bucket di priorità

Per verificare a quale bucket è assegnata la tua app, procedi in uno dei seguenti modi:

  • Chiama il numero getAppStandbyBucket().

  • Esegui questo comando in una finestra del terminale:

    adb shell am get-standby-bucket PACKAGE_NAME

Il sistema limita la tua app ogni volta che viene inserita in un bucket di standby dell'app il cui valore è maggiore di STANDBY_BUCKET_ACTIVE (10).

Best practice

Se la tua app segue le best practice per Sospensione e standby dell'app, la le funzionalità di gestione dell'alimentazione successive non sono difficili da gestire. Tuttavia, alcuni comportamenti delle app che in precedenza funzionavano bene, potrebbero causare problemi.

  • Non cercare di manipolare il sistema per inserire la tua app in un di sincronizzare la directory di una VM con un bucket. Il metodo scelto dal sistema per assegnare la priorità può cambiare e ogni dispositivo potrebbe scegliere di scrivere la propria app di bucketing con dell'algoritmo. Assicurati invece che l'app si comporti in modo appropriato, indipendentemente dal fatto che del bucket in cui si trova.
  • Se un'app non ha attività in Avvio applicazioni, potrebbe non essere mai promossa a del bucket attivo. Valuta la possibilità di riprogettare la tua app per svolgere questo tipo di attività.
  • Se gli utenti non possono interagire con le notifiche dell'app, gli utenti non sono in grado di attiva la promozione dell'app nel bucket attivo. In questo caso, considera riprogettando alcune notifiche per consentire agli utenti di interagire. Per alcune linee guida, vedi i pattern di progettazione delle notifiche di Material Design.

  • Se l'app non mostra una notifica dopo aver ricevuto una priorità alta messaggio Firebase Cloud Messaging (FCM), l'utente non può interagire con l'app e quindi la promuovi nel bucket attivo. Infatti, l'unico per i messaggi FCM ad alta priorità è l'invio di una notifica all'utente, quindi questa situazione non deve verificarsi. Su 12L (livello API 32) e inferiore, se contrassegni in modo improprio un messaggio FCM come priorità elevata quando questo non attivare l'interazione dell'utente, ciò può causare una riduzione della priorità dei messaggi futuri.

  • Se le app sono suddivise in più pacchetti, questi potrebbero trovarsi in bucket diversi e avere livelli di accesso diversi. Testa queste app con di pacchetti assegnati a vari bucket per assicurarti che l'app funzioni correttamente.