[Poradnik tygodnia] Jak zablokować aplikacji możliwość działania w tle?

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

Aplikacje, które nieustannie działają w tle, są prawdziwym utrapieniem dla użytkowników Androida. Ich ciągła praca powoduje znacznie większe zużycie baterii urządzenia. Skutkuje to również zajęciem cennej pamięci operacyjnej smartfona. Okazuje się jednak, że na blokadę takich zachowań istnieje lepszy sposób niż Greenify lub wbudowane metody oszczędzania energii w systemie Google’a. W tym poradniku przedstawię Wam metodę, dzięki której zablokować można działanie w tle dowolnej aplikacji zainstalowanej przez użytkownika, tak, by mogła ona pracować wyłącznie wtedy, gdy jest uruchomiona przez właściciela telefonu.

Jak zablokować aplikacji możliwość działania w tle?

Uwaga: do poprawnego działania tego poradnika wymagana jest urządzenie działająca pod kontrolą systemu Android 7.0 lub 7.1. Metoda ta nie działa dla innych wersji systemu Google’a.

  1. Pobierz pliki ADB i Fastboot dla swojego systemu na komputerze (można je pobrać tutaj – WindowsMacLinux).
  2. 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.
  3. 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.
  4. Podłącz swój telefon do komputera za pomocą kabla USB.
  5. Jako tryb połączenia wybierz opcję MTP – przesyłanie plików.
  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.
  7. Sprawdź, czy Twoje urządzenie jest poprawnie wykrywane przez ADB – w tym celu skorzystaj z komendy adb devices
  8. Operacja ta włączy ADB daemon. Jeśli po raz pierwszy korzystasz z połączenia ADB ze swoim telefonem, to autoryzuj ten proces, zaznaczając okienko „Pozwalaj zawsze podczas połączenia z tym komputerem”.
  9. Po raz kolejny skorzystaj z komendy adb devices. Jeśli w konsoli wyświetlony zostanie numer identyfikacyjny Twojego urządzenia, to możesz przejść do kolejnego kroku. Jeśli nie, to powtórz kroki od 1 do 9.
  10. Na samym początku konieczne jest znalezienie nazwy pakietu aplikacji, którą chcemy zablokować. Z łatwością można ją odkryć dzięki aplikacjom takim jak App Inspector.
  11. Kiedy odnajdziesz już nazwę niezbędną do zablokowania aplikacji, skorzystaj z komendy adb shell w wyświetlonej na komputerze konsoli.
  12. Teraz przejdziemy do procesu blokowania danemu programowi możliwości działania w tle. W tym celu skorzystaj z następującej komendy: cmd appops set <nazwa_aplikacji>RUN_IN_BACKGROUND ignore. Pole <nazwa_aplikacji> zastąp znalezioną wcześniej nazwą pakietu danego programu.
  13. Aby cofnąć wprowadzoną wyżej zmianę, wystarczy skorzystać z komendy cmd appops set <nazwa_aplikacji> RUN_IN_BACKGROUND allow, co ponownie pozwoli danej aplikacji na możliwość działania w tle.

Gotowe! Od teraz wybrane przez nas programy nie będą już nigdy działały w tle.

Źródło: XDA-Developers



  • Radosław Sowiński

    witam, mam drobny problem przy całym procesie (Galaxy S8), przy próbie zablokowania apki np. Aliexpress, (nie tylko, z aplikacją ryanair jest to samo) wywala mi bład „Permission denied”. Ma ktoś pomysł? screen: https://uploads.disquscdn.com/images/99caa7c679c78c544e40a5c971aeb716e324cb6e0be6167bcb0d9331e6d957e1.jpg

  • maxprzemo

    cmd appops query-op –user 0 RUN_IN_BACKGROUND allow
    Powyższa komenda zwraca wszystkie aplikacje które mają uprawnienie do działania w tle.
    Można też sprawdzić jakie uprawnienia i kiedy używała dana aplikacja.

    cmd appops get –user 0 com.android.chrome

    Powyższa komenda zwraca wszystkie uprawnienia aplikacji Chrome i kiedy zostały użyte:
    VIBRATE: allow; time=+1d6h52m58s119ms ago; duration=+50ms
    POST_NOTIFICATION: allow; time=+1d6h52m49s361ms ago
    WRITE_SETTINGS: default; rejectTime=+32m48s395ms ago
    CAMERA: allow; time=+9d20h20m0s57ms ago; duration=+168ms
    READ_CLIPBOARD: allow; time=+2d0h43m20s291ms ago
    WRITE_CLIPBOARD: allow; time=+2d0h43m29s115ms ago
    TAKE_AUDIO_FOCUS: allow; time=+1d6h52m49s404ms ago
    TOAST_WINDOW: allow; time=+1d6h54m17s116ms ago; duration=+3s649ms
    READ_EXTERNAL_STORAGE: allow; time=+1h21m15s151ms ago
    WRITE_EXTERNAL_STORAGE: allow; time=+1h21m15s151ms ago
    RUN_IN_BACKGROUND: allow; time=+4m57s220ms ago

    Znając nazwę uprawnienia można je zablokować komendą z poradnika. ja przykładowo wyłączyłem uprawnienia Chrome do kamery:

    cmd appops set com.android.chrome CAMERA ignore

    Wszystko ładnie działa 🙂

  • Marucins

    Czemu nie ma takiej opcji prosto z ustawień telefonu?

    • maxprzemo

      Na LineageOS i pochodnych ROMach jest taka opcja w ustawieniach „Prywatność” >> Ochrona prywatności >> Zaawansowane >> Tło.

      • RS2_15237_THE_END

        A nie wystarczy nie dać uprawnień chrome do np. kamery, mikrofonu, w ustawieniach systemu?

        • maxprzemo

          Tak. W przypadku kamery i mikrofonu to wystarczy z poziomu ustawień uprawnień aplikacji ale uprawnienie do działania w tle już nie mogę zabrać z tamtego menu.

  • Michał Szablewski

    Działanie w tle nie jest takie tragiczne. Przeważnie aplikacje włączają się w tle dlatego, że próbują łączyć się z internetem. I to jest właśnie przyczyną drenażu baterii…
    Problem jest w tym, że zwykle wyłączenie wifi lub danych komórkowych problemu nie rozwiązuje… Aplikacja i tak próbuje się z nim połączyć… Ale jest na to rada. Wystarczy wejść w informacje o aplikacji i wyłączyć możliwość pobierania danych w tle dla konkretnych aplikacji. Ja dodatkowo tym aplikacjom wyłączam możliwość wyświetlania powiadomień. Bez żadnych root’ów i adb…

    • RS2_15237_THE_END

      Dokładnie. 7 pozwala na duże możliwości personalizacji. Można ustawić aplikacje które mogą się łączyć przez LTE, można ustawiać które aplikacje mają działać niezależnie od blokady ekranu, każdej dać odpowiednie uprawnienia. Najlepiej zrobić to na szybko w ustawieniach, potem tylko pamiętać o każdej nowej i to samo zrobić. Po tym zabiegu telefon chodzi tak jak chcemy.

      • Foldex

        Widzę, że i ciebie tutaj przywiało 😉

        • RS2_15237_THE_END

          Używam od jakiegoś czasu na co dzień androida,, więc czasem poczytam o nowościach;)

          • Foldex

            A no chyba, że tak 😉

          • RS2_15237_THE_END

            WM też śledzę 🙂 może kiedyś się ogarną z systemem i będę mógł coś od nich kupić 🙂

    • Michał Derej

      Mówisz jakby ADB było czymś strasznym. Nie chcesz, to nie korzystaj, to jest poradnik, który ma coś zdziałać.

      • Michał Szablewski

        Nie miałem zamiaru czepiać się Twojego wpisu. Pokazałem tylko jak zmniejszyć zużycie baterii innym, prostym sposobem.

        • Pochulak

          Oczywiście masz rację, robię tak samo, ale po co skoro można zainstalować aplikację, która pewnie pożre tyle Ramu co te działające w tle razem

  • Szamajama_Okutasi

    W telefonach Huawei jest aplikacja Menedżer telefonu i tam można sobie wybrać, które aplikacje będą mogły działać w tle, a które będą ubijane. Nie trzeba żadnego roota, ani takich kombinacji. Aplikacja ta jest dostępna nie tylko na Androidzie 7.0, ale także na Androidzie 6.0 i 5.0 z nakładką od Huawei, czyli EMUI. 😉

    • RS2_15237_THE_END

      W drugą stronę też mozna, w task zablokować kłódkę aby aplikacja się nie zamykała przy czyszczeniu.

    • Marucins

      Jeden łepek z XDA napisał program dla każdego, pozwalający z telefonu ustawić co może a co nie może działać w tle.

      https://forum.xda-developers.com/android/apps-games/app-runinbackgroundsetter-v1-0-t3637705

    • sirrah777

      W telefonach tego producenta jest jeszcze jedna fajna opcja. Uniemożliwianie konkretnej aplikacji wybudzania telefonu z deep sleep.

  • Robert Andegaven

    Najlepiej jest zmniejszyć ilość procesów w tle w ustawieniach opcje programistyczne, to naprawdę działa pozytywnie na baterię. Niestety przy każdym restarcie telefonu trzeba znów powtórzyć tą czynność gdyż spowrotem będzie na standardowo. Gdzieś kiedyś wyczytałem że najlepiej jest ustawiać ilość procesów w tle na ilość rdzeni procesora. Jak ktoś nie wierzy to niech wejdzie w ustawienia aplikacje uruchomione trzeba rozwinąć menu i wybrać aplikacje w tle , standardowo jest ich uruchomione kilkadziesiąt a przy ustawieniu swojej liczby tyle co potrzeba

    • Michał Derej

      Dzięki za informację!

      • Tomasov

        Wy tak poważnie Panowie? Czy te manewry są wręcz koniecznością w androidzie aby zachować ostatnie szczątki energii na baterii?smutne to w dzisiejszej dobie

    • Michał Szablewski

      To jest właśnie największa bzdura. Tzn. to działa ale nie można sobie wybrać które mają być ubite, a które mają działać… I zaczyna się loteria. Ta opcja to tragedia jest…

      • RS2_15237_THE_END

        Też mi się wydaje, że lepiej aby te które używamy zawsze były w multitask, dlatego nigdy ich nie zamykam ręcznie. Jedynie mam ustawione po zablokowaniu ekranu aby zamykał kilka apliakcji które używam bardzo sporadycznie. Ich nowe uruchomienie to 1-3 sekundy. Tym sposobem normalnie używany telefon spokojnie trzyma pełny dzień a zdarza się, że dwa.

  • Brujo

    Dzięki za poradnik, ale mam pytanie – co znaczy, że program nie będzie nigdy działał w tle? Jak odpalę powiedzmy zablokowanego Facebooka, po czym zminimalizuję to on będzie wczytywany od nowa kiedy do niego wrócę, czy zostanie wtedy w pamięci RAM i wyłączy działanie w tle dopiero po tym jak go zamknę?

    • Michał Derej

      Za każdym razem jak wyjdziesz z aplikacji, to zostanie ona zamknięta.

      • Brujo

        Okej, skorzystałem, niby działa, ale Facebook dalej uruchamia się w tle i sobie działa, ale bierze już mniej RAMu, na xda ludzie też mają takie problemy. Mam wrażenie, że bierze mniej baterii, no i nie przychodzą powiadomienia (nie potrzebuję), więc to na pewno działa, chociaż nie do końca jakbym chciał. Przy 4 GB RAMu ten procesik można jeszcze przeboleć, ale Facebook i jego aplikacja doprowadza mnie już do nerwicy, jak można nie zrobić zoptymalizowanej apki, skoro używają jej miliony ludzi, zresztą taki instagram działa bardzo dobrze, a też wykupiony przez FB 😁