Spesso esistono alternative migliori da utilizzare al posto di un servizio in primo piano
dataSync
. Questo documento ti aiuta a trovare la migliore alternativa per il tuo caso d'uso.
Casi d'uso della migrazione
Questa sezione descrive alcune situazioni comuni in cui le app potrebbero attualmente utilizzare un servizio in primo piano dataSync
e le alternative consigliate da noi.
- Trasferimento di dati attraverso la rete
- Se il trasferimento è stato avviato dall'utente e hai bisogno che l'utente sia informato sull'avanzamento del trasferimento, utilizza le API di trasferimento di dati avviate dall'utente. In caso contrario, utilizza WorkManager.
- Trasferimento di dati da o verso un dispositivo locale
- Utilizza un'API specifica, se disponibile (ad esempio, Gestione dispositivi associati); in caso contrario, utilizza un
connectedDevice
servizio in primo piano. - Transcodifica dei contenuti multimediali
- Utilizza il nuovo
mediaProcessing
tipo di servizio in primo piano. - Il completamento di una breve attività critica
- Utilizza un
shortService
servizio in primo piano. - Elaborazione dei file (ad esempio, trasferimento di dati su o da una scheda SD, ridimensionamento di contenuti o crittografia o decrittografia di dati)
- Se l'attività può essere completata in meno di tre minuti, utilizza un
servizio in primo piano
shortService
. In caso contrario, utilizza WorkManager.
Utilizza le API di trasferimento di dati avviate dall'utente
Se la tua app deve trasferire i dati a un server remoto, puoi utilizzare le nuove API di trasferimento di dati avviate dall'utente. Queste API sono appropriate se si verifica quanto segue:
- L'utente ha avviato il trasferimento di dati
- Devi far sì che l'utente venga informato dell'avanzamento del trasferimento dei dati
- L'interruzione del trasferimento da parte del sistema incide negativamente sull'esperienza utente
Se una di queste condizioni non è soddisfatta, devi utilizzare invece WorkManager.
Ad esempio, un'app multimediale potrebbe consentire agli utenti di scaricare album da riprodurre localmente. Se un utente desidera scaricare una playlist e riprodurla immediatamente, puoi utilizzare le API di trasferimento di dati avviate dall'utente. Se invece l'utente vuole che la playlist scaricata venga aggiornata periodicamente in background senza che l'utente lo avvii, WorkManager è una scelta migliore.
Per ulteriori informazioni, consulta la documentazione sulla migrazione dei servizi in primo piano a job di trasferimento di dati avviati dall'utente.
Utilizzare WorkManager
Nella maggior parte dei casi, WorkManager è l'opzione migliore quando devi pianificare il lavoro. È necessario progettare le attività in modo che possano essere interrotte o differite dal sistema. Per ulteriori informazioni, consulta la documentazione di WorkManager.
Di seguito sono riportate alcune note che potrebbero essere utili durante la migrazione da un servizio in primo piano a WorkManager:
- Se devi eseguire il lavoro il prima possibile, puoi pianificare una richiesta di lavoro accelerato. Questa opzione è particolarmente utile se stai pianificando il lavoro in risposta a un messaggio FCM di trasmissione, sveglia esatta o priorità elevata.
- Se hai bisogno che il lavoro venga eseguito periodicamente, puoi pianificare lavori periodici. Una richiesta di lavoro periodica ti consente di specificare approssimativamente la frequenza di esecuzione del lavoro, ma non garantisce un tempo specifico. Ciò consente al sistema di pianificare le richieste di lavoro da app diverse per bilanciare le esigenze sul dispositivo.
- Dovresti definire i vincoli di lavoro per specificare le circostanze giuste in cui eseguire il job. Ad esempio, se la tua app deve scaricare risorse non urgenti, puoi specificare che il job venga eseguito mentre il dispositivo è in carica e connesso a una rete non a consumo. WorkManager può quindi eseguire il job in un orario che bilancia il carico sul sistema.
- WorkManager può annullare e riprovare un job, se necessario. Ad esempio, l'utente potrebbe spegnere il dispositivo mentre un job è in esecuzione; il sistema può quindi riprovare a eseguire il job quando il dispositivo sarà di nuovo disponibile. Assicurati di progettare e testare il flusso di lavoro per assicurarti che il ciclo di annullamento e nuovo tentativo funzioni correttamente.
Utilizzare un tipo di servizio in primo piano più specifico
Se non riesci a passare a un altro modo di svolgere le operazioni in background, potresti comunque dover utilizzare un servizio in primo piano. In questo caso, dovresti trovare un tipo di servizio
appropriato da utilizzare al posto di dataSync
. Poiché il tuo codice utilizza già un servizio in primo piano, la migrazione è semplice: devi solo scegliere il tipo di servizio in primo piano appropriato e assicurarti che la tua app soddisfi i requisiti del servizio.
Come sempre, quando prendi in considerazione l'utilizzo di un servizio in primo piano, devi valutare se esiste un'API alternativa migliore su misura per il tuo caso d'uso.
Utilizzare un servizio in primo piano breve del servizio
Se la tua app deve eseguire un'attività breve e critica, un servizio in primo piano shortService
potrebbe essere l'opzione migliore. Ecco alcune situazioni in cui un servizio shortService
in primo piano potrebbe essere appropriato:
- L'utente avvia un'azione (ad esempio la sincronizzazione dei dati con il server) e vuoi assicurarti che l'operazione termini anche se l'utente invia immediatamente l'app in background.
- Salvataggio delle informazioni in memoria in un'archiviazione permanente.
- Crittografia o decrittografia di informazioni.
Per informazioni complete, consulta la documentazione di shortService
.
Utilizzare un servizio in primo piano del dispositivo connesso
Se devi trasferire dati su un altro dispositivo locale, ti consigliamo di utilizzare un
connectedDevice
servizio in primo piano. Ecco alcune situazioni comuni
in cui potrebbe essere necessario eseguire questa operazione:
- Comunicare con un accessorio Bluetooth, come gli auricolari o uno smartwatch
- Trasferimento di dati a un dispositivo connesso in locale tramite una connessione USB, NFC o una connessione a internet locale
Tuttavia, in queste situazioni potresti riuscire a utilizzare Gestione dispositivi associati per connettersi al dispositivo anziché utilizzare un servizio in primo piano. Come sempre, se è disponibile un'API per uso speciale per il tuo caso d'uso, questa è di solito una scelta migliore rispetto all'utilizzo di un servizio in primo piano.
Utilizza il nuovo servizio in primo piano di elaborazione di contenuti multimediali
Se devi elaborare i dati multimediali, puoi utilizzare il nuovo servizio in primo piano mediaProcessing
. Questo tipo di servizio è disponibile se la tua app ha come target Android 15 o versioni successive. Ad esempio, questo tipo di servizio è appropriato se
la tua app deve transcodificare contenuti multimediali da un formato a un altro per la riproduzione. Per ulteriori informazioni, consulta la documentazione relativa al servizio in primo piano di elaborazione dei contenuti multimediali.
Risorse aggiuntive
Per ulteriori informazioni su questa modifica ai servizi in primo piano, consulta le seguenti risorse aggiuntive: