Alternative ai servizi in primo piano di sincronizzazione dei dati

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 connectedDeviceservizio in primo piano.
Transcodifica dei contenuti multimediali
Utilizza il nuovo mediaProcessingtipo di servizio in primo piano.
Il completamento di una breve attività critica
Utilizza un shortServiceservizio 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: