Opcje zadania Przenoszenie danych w tle

Wiele aplikacji musi przenieść dane w tle. Na tej stronie znajdziesz rozwiązanie odpowiednie do Twoich potrzeb.

Przypadki użycia migracji

W tej sekcji opisano kilka typowych sytuacji, w których trzeba przenieść aplikacje. z urządzenia i z niego, co pomaga wybrać odpowiednie narzędzie tę sytuację.

Przesyłanie danych przez sieć

Jeśli przeniesienie zostało zainicjowane przez użytkownika oraz musisz zachować poinformowany o postępach przenoszenia, użyj przesyłania danych zainicjowanego przez użytkownika interfejsów API. W przeciwnym razie użyj WorkManager lub odpowiedni typ usługi na pierwszym planie.

Jeśli chcesz zaplanować pobieranie, możesz też skorzystać z DownloadManager. DownloadManager zarządza kontem i ponawia próby pobrania po błędach, restartach urządzeń, i zmiany łączności. DownloadManager nie oferuje jednak wszystkich funkcji debugowania i testowania, które są dostępne w WorkManager oraz JobScheduler

Przenoszenie danych na urządzenie lokalne lub z niego

Użyj określonego interfejsu API, jeśli jest dostępny (np. urządzenia towarzyszącego). ); w przeciwnym razie użyj planu connectedDevice usługi.

Krótkie, kluczowe zadanie

Użyj usługi na pierwszym planie shortService.

przetwarzania plików (na przykład przesyłania danych na kartę SD lub z niej, zmiany rozmiaru treści albo szyfrowania i odszyfrowywania danych);

Jeśli zadanie można wykonać w czasie krótszym niż 3 minuty, użyj shortService usługi na pierwszym planie. W przeciwnym razie użyj WorkManagera.

Korzystanie z interfejsów API do przenoszenia danych inicjowanych przez użytkownika

Jeśli Twoja aplikacja musi przesłać dane na serwer zdalny, możesz użyć metody nowe interfejsy API do przenoszenia danych inicjowane przez użytkownika. Te interfejsy API są odpowiednie, jeśli prawda jest następujący:

  • Użytkownik rozpoczął przenoszenie danych
  • Musisz informować użytkownika o postępach przenoszenia danych
  • Jeśli system zakłóci przesyłanie, będzie negatywnie wpływało na wrażenia użytkownika.

Jeśli którykolwiek z tych warunków nie jest spełniony, użyj WorkManagera. .

Aplikacja do multimediów może na przykład umożliwiać użytkownikom pobieranie albumów i odtwarzanie ich lokalnie. Jeśli chce pobrać playlistę i od razu ją odtworzyć, możesz użyć za pomocą inicjowanych przez użytkownika interfejsów API przenoszenia danych. Jeśli z kolei użytkownik chce, aby atrybut pobrano playlistę, która będzie okresowo aktualizowana w tle bez użytkownika jest lepszym wyborem.

Więcej informacji znajdziesz w dokumentacji dotyczącej migracji usług działających na pierwszym planie do zadań przenoszenia danych inicjowanych przez użytkownika.

Używanie WorkManagera

W większości przypadków najlepiej sprawdzi się WorkManager, jeśli chcesz zaplanować pracę. Musisz zaprojektować zadania w taki sposób, aby można je było przerwać lub odroczyć przez system. Więcej informacji znajdziesz w dokumentacji usługi WorkManager.

Oto kilka uwag, które mogą Ci się przydać podczas migracji z pierwszego planu do WorkManagera:

  • Jeśli musisz przeprowadzić pracę jak najszybciej, możesz zaplanować z prośbą o pomoc przyspieszoną. Ta opcja jest szczególnie przydatna, gdy planując pracę w odpowiedzi na komunikat, dokładny alarm, o wysokim priorytecie w FCM.
  • Jeśli chcesz, aby zadania były wykonywane okresowo, możesz zaplanować harmonogram w pracy. Okresowe żądanie pracy pozwala określić w przybliżeniu, jak często będzie realizowany, ale nie gwarantuje konkretnego terminu. Dzięki temu do planowania żądań pracy z różnych aplikacji w celu zrównoważenia potrzeb na urządzeniu.
  • Należy zdefiniować ograniczenia pracy, aby określić podczas uruchamiania zadania. Jeśli na przykład aplikacja musi pobrać mniej pilnych zasobów, możesz określić, że zadanie ma być uruchamiane w trakcie urządzenie się ładuje i jest połączone z siecią bez pomiaru. WorkManager może z czasem równoważącym obciążenie systemu.
  • WorkManager może w razie potrzeby anulować zadanie i ponowić je. Przykład: użytkownik może wyłączyć urządzenie podczas wykonywania zadania; system może i spróbuj ponownie wykonać zadanie, gdy urządzenie będzie ponownie dostępne. Pamiętaj, aby projektować i przetestuj przepływ pracy, aby upewnić się, że cykl anuluj i spróbuj ponownie. bez obaw.

Użyj bardziej konkretnego typu usługi na pierwszym planie

Jeśli nie możesz przełączyć się na inny sposób pracy w tle, prawdopodobnie muszą korzystać z usługi na pierwszym planie. W takim przypadku należy znaleźć odpowiedni typ usługi, który ma być używany zamiast dataSync. Ponieważ w Twoim kodzie użyto już usługi na pierwszym planie, ta migracja jest prosta, musisz tylko wybrać wybierz odpowiedni typ usługi na pierwszym planie i upewnij się, że aplikacja go spełnia z wymaganiami dotyczącymi usługi.

Jeśli zastanawiasz się nad korzystaniem z usługi na pierwszym planie, zastanów się, czy istnieje lepszy alternatywny interfejs API dostosowany do Twoich potrzeb. tych kwestii.

Użyj krótkiej usługi na pierwszym planie

Jeśli aplikacja musi wykonać krótkie, kluczowe zadanie, na pierwszym planie shortService usługa może być najlepszym rozwiązaniem. Oto kilka sytuacji, w których shortService usługa działająca na pierwszym planie może być odpowiednia:

  • Użytkownik inicjuje działanie (takie jak synchronizacja danych z serwerem) i chcesz, upewnij się, że operacja dobiegnie końca, nawet jeśli użytkownik od razu wyśle i aplikacjami w tle.
  • Zapisywanie informacji w pamięci w pamięci trwałej.
  • Szyfrowanie lub odszyfrowywanie informacji.

Pełne informacje znajdziesz w dokumentacji usługi shortService.

Użyj usługi na pierwszym planie połączonego urządzenia

Jeśli chcesz przenieść dane na inne urządzenie lokalne, możesz użyć connectedDevice usługa na pierwszym planie. Oto kilka typowych sytuacji w których może być konieczne wykonanie tych czynności:

  • komunikacją przy użyciu akcesorium Bluetooth, np. słuchawek lub smartwatcha.
  • Przenoszenie danych na urządzenie podłączone lokalnie za pomocą połączenia USB, NFC lub lokalne połączenie internetowe

W takich sytuacjach możesz jednak skorzystać z urządzenia towarzyszącego, menedżera, aby połączyć się z urządzeniem zamiast korzystać z usługi na pierwszym planie. Jeśli w danym przypadku jest dostępny specjalny interfejs API, jest zwykle lepszym wyborem niż usługa na pierwszym planie.

Dodatkowe materiały

Więcej informacji o tej zmianie dotyczącej usług działających na pierwszym planie znajdziesz w tych artykułach: dodatkowe materiały: