[Poradnik tygodnia] Jak zatrzymać wakelock dla dowolnej aplikacji bez roota?

mm Michał Derej Artykuły 2017-09-09

Wakelock to funkcja niezbędna dla aplikacji na Androida, która potrafi być niestety dość wredna. To właśnie przez nią telefon co jakiś czas wychodzi ze stanu głębokiego uśpienia tylko po to, by zsynchronizować dane w jakiejś aplikacji, lub sprawdzić, czy nie ma nowych powiadomień. Dla użytkowników oznacza to oczywiście szybszy dostęp do powiadomień, ale również większe rozładowanie akumulatora urządzenia. Nieciekawie robi się, gdy telefon bardzo szybko rozładowuje się z powodu mniej znaczącego programu, który jednak musimy zatrzymać na smartfonie z różnych powodów. W takim przypadku najlepszą metodą jest ręczne wyłącznie wakelocka dla danej aplikacji – w tym poradniku pokażę wam jak to zrobić, krok po kroku.

Wykrywanie aplikacji, którą należy wyłączyć

Na samym początku powinniśmy określić, która aplikacja sprawia problemy. W tym celu posłużymy się ADB i jednym prostym narzędziem.

  1. Na swój telefon pobierz aplikację Better Battery Stats. W sklepie Google Play jest ona płatna, ale stąd można ściągnąć ją kompletnie za darmo. Zainstaluj ją.
  2. Pobierz pliki ADB i Fastboot dla swojego systemu na komputerze (można je pobrać tutaj – WindowsMacLinux).
  3. Zainstaluj sterowniki USB dla swojego urządzenia. Możesz je znaleźć na stronie producenta. Uniwersalne sterowniki zebrane są także na tej stronie Google’a.
  4. Włącz debugowanie USB na swoim telefonie – możesz to zrobić w zakładce dla deweloperów, którą odblokować można poprzez siedmiokrotne kliknięcie Numeru kompilacji w zakładce Informacje o urządzeniu.
  5. Podłącz swój telefon do komputera za pomocą kabla USB.
  6. Przejdź do lokalizacji, w której znajdują się pliki ADB i Fastboot. Trzymając klawisz Shift, wciśnij prawy przycisk myszy i wybierz opcję Otwórz okno polecenia tutaj (instrukcja dla systemu Windows). 
  7. Upewnij się, że smartfon jest poprawnie wykrywany za pomocą komendy adb devices
  8. Teraz uaktywnimy powłokę systemową. Możesz to zrobić za pomocą następującej komendy: adb shell
  9. Ostatnim krokiem, który w tej części poradnika należy wykonać na komputerze, jest nadanie aplikacji Better Battery Stats odpowiednich uprawnień. Zrób to za pomocą tej komendy: pm grant com.asksven.betterbatterystats_xdaedition android.permission.BATTERY_STATS
  10. Nareszcie korzystanie z Better Battery Stats bez roota stało się możliwe! Teraz naładuj swój telefon, odłącz go od ładowarki i skonfiguruj program.
  11. Poczekaj od 30 do 60 minut, by BBS mógł zebrać odpowiednie dane na temat zużycia baterii.
  12. Po tym czasie możesz je przejrzeć – są dostępne w zakładce Partial Wakelocks, wraz ze wskaźnikiem procentowym, który określa, jak często urządzenie było wybudzane przez daną aplikację.
  13. Ostatnim krokiem jest znalezienie nazwy pakietu programu, który sprawia problem – można to zrobić np. dzięki prostej aplikacji Package Name Viewer 2.0, która w sklepie Google Play jest dostępna za darmo.

Wyłącznie wakelocka dla danej aplikacji

Teraz gdy poznaliśmy już nazwę pakietu programu, który sprawia problem, przejdziemy do naprawiania tej niedogodności.

  1. Przejdź do lokalizacji, w której znajdują się pliki ADB i Fastboot. Trzymając klawisz Shift, wciśnij prawy przycisk myszy i wybierz opcję Otwórz okno polecenia tutaj.
  2. Upewnij się, że smartfon jest poprawnie wykrywany za pomocą komendy adb devices
  3. Uaktywnij powłokę systemową za pomocą komendy adb shell
  4. Teraz skorzystaj z następującej komendy, która spowoduje wyłącznie wakelocka dla danej aplikacji (miejsce com.android.application zastąp nazwą pakietu feralnego programu): cmd appops set com.android.application WAKE_LOCK ignore
  5. Gotowe! Aplikacja, której wakelock wyłączyliście, nie będzie już sprawiała problemu.

Źródło: XDA-Developers



  • Łukasz

    Naprawdę ciekawy sposób. Dzięki

  • do

    aktualizacja danej aplikacji przywraca poprzednie ustawienia czy ustawienie wyłączenia wakelock pozostaje nienaruszone?

    • Michał Derej

      Szczerze mówiąc, to tego nie sprawdzałem, ale nie powinna wpływać na aplikację.

  • RS2_15237_THE_END

    W Huawei jest fajna opcja, można ustawić które aplikacje mają się zamykać po zablokowaniu telefonu, czy to jest odpowiednik tej procedury?

    • Michał Derej

      Tutaj nie będą się one nawet włączać, to jest cały myk.

      • RS2_15237_THE_END

        no nie będą, przecież jak nie uruchomię ich to same się chyba nie włączą?

        • Michał Derej

          W sumie to masz rację, można powiedzieć, że to taki jakby odpowiednik. Ale „silniejszy”.

          • RS2_15237_THE_END

            Nie wiem, dlatego pytam. 🙂

  • disqus_Zc

    Jak jest root jak zatrzymać wakelock?

    • Paulina

      Patrz punkt 1 do 10…szczególnie punkt 10