Wybierz odpowiedni interfejs API, aby urządzenie było aktywne

Gdy użytkownik nie korzysta z urządzenia z Androidem, szybko przechodzi ono w stan zawieszenia, aby uniknąć rozładowania baterii. Czasami jednak aplikacja musi uniemożliwić przejście procesora w stan zawieszenia. W niektórych przypadkach aplikacja może wymagać włączonego ekranu podczas działania. W innych przypadkach aplikacja nie musi utrzymywać włączonego ekranu, ale nadal potrzebuje aktywnego procesora.

Podejście, które zastosujesz, zależy od potrzeb aplikacji. Ogólna zasada jest jednak taka, że należy używać jak najlżejszego podejścia, aby zminimalizować wpływ aplikacji na zasoby systemowe. Ten dokument pomoże Ci wybrać odpowiednią technologię Androida w Twojej sytuacji.

Wybór odpowiedniej technologii

Najlepsza opcja utrzymania urządzenia w stanie aktywności zależy od potrzeb aplikacji. Ta sekcja pomoże Ci wybrać odpowiednie podejście.

Schemat blokowy podsumowujący, jak wybrać odpowiednie podejście do utrzymywania urządzenia w stanie aktywności. Treść schematu blokowego została rozwinięta w poniższym tekście.

  • Czy aplikacja musi utrzymywać włączony ekran?
    • Jeśli Tak, zapoznaj się z sekcją Włączanie ekranu. Może istnieć interfejs API specjalnego przeznaczenia, który spełnia Twoje potrzeby. Jeśli na przykład implementujesz interfejs połączeń telefonicznych, możesz użyć platformy telekomunikacyjnej Androida, która w razie potrzeby utrzymuje ekran włączony. Jeśli w Twojej sytuacji nie ma interfejsu API specjalnego przeznaczenia, możesz użyć keepScreenOninterfejsu API.
  • Czy aplikacja korzysta z usługi na pierwszym planie i musisz utrzymywać urządzenie w stanie aktywności, gdy ekran jest wyłączony, a usługa działa?
    • Jeśli Nie, nie musisz utrzymywać urządzenia w stanie aktywności. Jeśli użytkownik aktywnie korzysta z aplikacji, urządzenie pozostanie włączone. Jeśli użytkownik nie korzysta z aplikacji, a usługa nie działa na pierwszym planie, w razie potrzeby należy przełączyć urządzenie w tryb zawieszenia. Jeśli chcesz tylko mieć pewność, że niektóre zadania zostaną wykonane, gdy użytkownik nie będzie korzystać z aplikacji, zapoznaj się z dokumentacją dotyczącą zadań w tle, aby znaleźć najlepszą opcję.
    • Jeśli tak, najpierw sprawdź, czy naprawdę musisz używać usługi działającej na pierwszym planie. W zależności od sytuacji możesz użyć specjalnego interfejsu API zamiast usługi na pierwszym planie. Informacje o nich znajdziesz w dokumentacji usługi na pierwszym planie. Jeśli na przykład musisz śledzić lokalizację użytkownika, możesz użyć interfejsu Geofencing API zamiast location usługi na pierwszym planie.
  • Czy zawieszenie urządzenia, gdy usługa na pierwszym planie jest uruchomiona, a ekran urządzenia jest wyłączony, wpłynie negatywnie na wrażenia użytkownika? (Jeśli na przykład używasz usługi działającej na pierwszym planie do aktualizowania powiadomień, zawieszenie urządzenia nie wpłynie negatywnie na wrażenia użytkownika).
    • Jeśli Nie, nie używaj blokady uśpienia. Działanie zostanie automatycznie wznowione, gdy użytkownik zacznie korzystać z urządzenia, co spowoduje wyjście z trybu zawieszenia.
    • Jeśli tak, może być konieczne użycie blokady wybudzania. Warto jednak sprawdzić, czy nie używasz już interfejsu API lub nie wykonujesz działania, które deklaruje blokadę wybudzania w Twoim imieniu, zgodnie z opisem w sekcji Działania, które utrzymują urządzenie w stanie aktywności.

Działania, które nie pozwalają uśpić urządzenia

Jeśli Twoja aplikacja wykonuje którąś z tych czynności, nie musisz samodzielnie ustawiać blokady wybudzania. Poniższe działania i interfejsy API utrzymują urządzenie w stanie aktywności.

  • Jeśli odtwarzasz dźwięk, system audio ustawia i zarządza blokadą wybudzania za Ciebie. Nie musisz tego robić samodzielnie.
  • Jeśli używasz interfejsów API lub bibliotek do planowania zadań, takich jak WorkManager, JobScheduler lub DownloadManager, system lub biblioteka uzyskuje blokadę uśpienia przypisaną do Twojej aplikacji.
  • Jeśli używasz Media3 ExoPlayera, możesz użyć ExoPlayer.setWakeMode(), aby odtwarzacz ustawił blokadę wybudzania.
  • Niektóre czujniki urządzenia to czujniki wybudzania. Możesz użyć SensorManager, aby te czujniki wybudzały urządzenie, gdy mają dane do przekazania. Aby sprawdzić, czy czujnik jest czujnikiem wybudzania, wywołaj funkcję Sensor.isWakeUpSensor.
  • Jeśli zaplanujesz alarm, urządzenie wybudzi się, gdy alarm zadzwoni, nawet jeśli aplikacja nie będzie działać.

Zobacz również