Co oznacza przycisk „Force stop”?

26

Kiedy idę do Settings > Applications > Manage Applications > Downloaded, widzę listę aplikacji. Po wybraniu niektórych aplikacji widzę przycisk „Force stop” aktywny, ale niektóre aplikacje mają przyciemniony przycisk.

Co to znaczy? Co się stanie, jeśli nacisnę ten przycisk?

Ten przycisk nie może oznaczać uruchomienia aplikacji, ponieważ aplikacje z tym przyciskiem nie są wymienione w Runningsekcji.

Czy mogę wymienić tylko aplikacje z Force stopaktywnym przyciskiem i odinstalować je?


Wersja Androida: 3.2

Suzan Cioc
źródło

Odpowiedzi:

18

Jak powiedziałem w moim komentarzu do odpowiedzi paco, informacje, które podał, są w większości prawidłowe: większość aplikacji nie wychodzi całkowicie, jeśli je opuścisz, i żadna aplikacja nie powinna wyjść, jeśli opuścisz je za pomocą przycisku „Strona główna”. Co więcej, niektóre aplikacje mają uruchomione usługi w tle, których użytkownik w innym przypadku nie mógłby zamknąć.

Teraz są sytuacje, w których trzeba zatrzymać aplikację (w tym jej usługi w tle) - np. Jeśli chcesz odinstalować tę aplikację (lub, w przypadku aplikacji systemowej, jej aktualizacje). Zauważysz to, gdy przycisk „Force Stop” jest aktywny, przycisk „Odinstaluj” (lub „Usuń”) jest wyszarzony - ale ten ostatni aktywuje się po zatrzymaniu aplikacji za pomocą „Force Stop”. (Nawiasem mówiąc, jeśli oba przyciski są wyszarzone, możesz powiedzieć, że jest to aplikacja systemowa - której nie możesz odinstalować).

Btw: Jeśli przycisk „Force Stop” jest wyszarzony („przyciemniony”, jak to określasz), oznacza to, że aplikacja nie jest aktualnie uruchomiona, ani nie ma żadnej usługi (w tym momencie).

Izzy
źródło
1
You will notice this when the "Force Stop" button is active, the "Uninstall" (or "Remove") button is grayed out, czy możesz podać przykładową aplikację, która ma takie zachowanie? Właśnie przejrzałem niektóre z moich aplikacji i odkryłem, że przyciski „Force Stop” i „Uninstall” są aktywne. Jestem na Androidzie 4.4.2.
szczegółowooi
1
Ponieważ moja odpowiedź ma już 2 lata, Kitkat nie był wtedy dostępny; to zachowanie mogło się zmienić lub nie wpływać na wszystkie aplikacje. Nie mogę testować za pomocą Kitkat (nie działa na tym urządzeniu) i bez pamięci nie pamiętam, z jakimi pakietami to widziałem, przepraszam.
Izzy
15

Kod za zatrzymania Sił przycisku jest skomplikowane i nieudokumentowane. Powielę to dosłownie, a następnie przejrzę to po jednym kawałku.

private void checkForceStop() {
    if (mDpm.packageHasActiveAdmins(mPackageInfo.packageName)) {
        // User can't force stop device admin.
        updateForceStopButton(false);
    } else if ((mAppEntry.info.flags&ApplicationInfo.FLAG_STOPPED) == 0) {
        // If the app isn't explicitly stopped, then always show the
        // force stop button.
        updateForceStopButton(true);
    } else {
        Intent intent = new Intent(Intent.ACTION_QUERY_PACKAGE_RESTART,
                Uri.fromParts("package", mAppEntry.info.packageName, null));
        intent.putExtra(Intent.EXTRA_PACKAGES, new String[] { mAppEntry.info.packageName });
        intent.putExtra(Intent.EXTRA_UID, mAppEntry.info.uid);
        intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(mAppEntry.info.uid));
        getActivity().sendOrderedBroadcast(intent, null, mCheckKillProcessesReceiver, null,
                Activity.RESULT_CANCELED, null, null);
    }
}

Pierwszy ifwiersz sprawdza, czy którykolwiek składnik pakietu jest administratorem urządzenia (tzn. Czy jest zaznaczony na liście Administratorzy urządzenia na stronie Zabezpieczenia aplikacji Ustawienia ). Jeśli tak, przycisk jest wyłączony (wyszarzony), więc nie można zatrzymać administratorów urządzenia.

Następnie else ifsprawdza, czy pakiet jest już zatrzymany . Tutaj zatrzymany nie oznacza tylko „nie działa”. O ile mi wiadomo, pakiet jest w stanie zatrzymania, jeśli nigdy nie uruchomiłeś z niego żadnego komponentu (na przykład poprzez uruchomienie go z menu) lub jeśli nacisnąłeś przycisk Force stop (ten lub w okno dialogowe „przestał działać”) i nie uruchamiaj ponownie żadnego z jego składników. Jeśli pakiet nie został zatrzymany, przycisk jest włączony .

elsePrzypadek obejmuje rzadką ewentualność, że aplikacja nie została zatrzymana i nie jest administratorem urządzenia. W takim przypadku daje innym usługom systemowym szansę na włączenie przycisku. Na przykład aplikacja może mieć ustawiony i oczekujący alarm, co później spowoduje ponowne uruchomienie aplikacji nawet ze stanu zatrzymania. W takim przypadku przycisk zostanie włączony. Jeśli żadna inna usługa systemowa nie ma powodu, aby włączyć przycisk, zostanie on wyłączony.

Podsumowanie

Przycisk Wymuś zatrzymanie jest włączony, jeśli pakiet nie jest administratorem urządzenia i albo nie wymusiłeś już tej aplikacji, albo wymusiłeś ją, ale usługa systemowa myśli, że uruchomi ją ponownie.

Jeśli aplikacja jest uruchomiona (i nie jest administratorem urządzenia), przycisk Force stop na pewno będzie włączony, ale włączenie przycisku nie oznacza, że ​​aplikacja jest uruchomiona.

Dan Hulme
źródło
To wspaniałe, że pokazujesz nam kod, który określa, czy przycisk jest wyświetlany, czy nie. Dla programisty takiego jak ja jest to idealna odpowiedź. Ale tak naprawdę to tylko połowa odpowiedzi. Nie pokazuje się, co się dzieje, kiedy faktycznie naciskasz przycisk.
John Pankowicz
2

Android przechowuje w swojej pamięci 4 typy aplikacji. Nie pamiętam, że wszystkie oprócz tła działającego i buforowanego to 2 z nich ... (dostęp do buforowanego tła można uzyskać, klikając przycisk menu sprzętowego na karcie uruchomionej i wybierając wyskakującą opcję)

Chociaż może nie być widoczny w uruchomionych procesach, nie jest całkowicie martwy.

Przeważnie powinny znajdować się w pamięci podręcznej w tle z pamięci podręcznej .

także o menedżerach zadań .. Nie zaleca się ich używania, ponieważ Android został zakodowany na stałe, aby efektywnie zarządzać aplikacjami. Zabójcy aplikacji / zadań faktycznie raczej rozładowują baterię, ponieważ po zabójcy zabija aplikacje, zgodnie z algorytmem androida, zostaną uruchomione znowu! (a aplikacje zajmują więcej pamięci przy uruchamianiu niż w idealnym stanie), więc staje się to cyklem i wyczerpuje baterię.

więc przycisk wymuszenia zamknięcia jest aktywny w większości uruchomionych i buforowanych procesów i może istnieć w bardzo niewielu aplikacjach, które znajdują się w dwóch pozostałych typach procesów!

w innych aplikacjach jest cholernie!

Nirmik
źródło
1
Jest to więcej niż 4 typy (więcej informacji na temat cyklu życia aplikacji i aktywności na Androida ). Ale te klasy nie mają nic wspólnego z przyciskiem „przymusowego zatrzymania”, a przynajmniej nie bezpośrednio (patrz moja odpowiedź : aktywny przycisk „przymusowego zatrzymania” oznacza po prostu, że obecnie działa sama aplikacja lub jedna z jej zarejestrowanych usług).
Izzy
-2

Ten przycisk jest aktywny w przypadku aplikacji, które są uruchomione lub działają od ostatniego uruchomienia urządzenia.

Android nie zabija aplikacji całkowicie po wyjściu z niego, ten przycisk służy do całkowitego zamknięcia aplikacji i usunięcia jej ze stosu (aplikacje uruchomione), również ten przycisk zwalnia pamięć używaną przez aplikację.

Nie ma sposobu, aby wyświetlić listę uruchomionych aplikacji, również aplikacje działające w tle mają ten przycisk.

W Sklepie Play dostępne są bezpłatne aplikacje Killer do automatycznego zarządzania pamięcią urządzenia.

pacoespinoza
źródło
3
Chociaż podstawowe informacje są poprawne: lepiej usuń część dotyczącą „automatycznych zabójców”. Być może minęło trochę czasu, kiedy były potrzebne (przed Androidem 2.x), ale są one absolutnie przeciwwskazane i mają negatywny wpływ na czas działania baterii.
Izzy