Що означає кнопка «Примусово зупинити»?


26

Коли я переходжу до програми, Settings > Applications > Manage Applications > Downloadedя бачу список програм. Якщо я вибираю деякі програми, то бачу кнопку "Примусити зупинку" активною, але в деяких програмах ця кнопка затьмарена.

Що це означає? Що станеться, якщо натиснути цю кнопку?

Ця кнопка не може означати запуску програми, оскільки програми з цією кнопкою не вказані в Runningрозділі.

Чи можу я перерахувати лише програми, у яких Force stopактивована кнопка, і видалити їх?


Версія для Android: 3.2

Відповіді:


18

Як сказано в моєму коментарі до відповіді Пако, інформація, яку він дав, є в основному вірною: Більшість додатків не виходять повністю, якщо ви їх залишите, і жодна програма не повинна виходити, якщо ви залишите її за допомогою кнопки "Головна". Крім того, деякі програми мають фонові послуги, які користувач інакше не може вийти.

Зараз є деякі ситуації, коли вам потрібно зупинити додаток (включаючи його фонові послуги), наприклад, якщо ви хочете видалити це додаток (або, у випадку системного додатку, його оновлення). Ви помітите це, коли активована кнопка «Примусово зупинити», кнопка «Видалити» (або «Видалити») буде сірою, але остання активується, коли ви зупинили додаток за допомогою «Примусової зупинки». (Якщо обидві кнопки мають сірий колір, до речі, ви можете сказати, що це системний додаток, який ви не можете видалити).

Btw: Якщо кнопка "Призупинити зупинку" відтінена сірою ("затемненою", як ви це сказали), це означає, що додаток наразі не працює, а також не працює будь-яка служба (на той момент).


1
You will notice this when the "Force Stop" button is active, the "Uninstall" (or "Remove") button is grayed out, чи можете ви навести приклад програми, яка має таку поведінку? Я просто проглянув деякі мої програми та виявив, що активовані кнопки "Припинити" та "Видалити". Я на Android 4.4.2.
cychoi

1
Оскільки моїй відповіді вже два роки, Кіткат тоді не був доступний; ця поведінка може змінитися або не впливати на всі програми. Я не можу перевірити Kitkat (жоден пристрій, який не працює), і з головою не пам'ятаю, з якими пакунками я бачив це, вибачте.
Іззі

15

Код позаду Force стоп кнопка є складним і без документів. Я відтворять його дослівно, а потім проходжу його по одній деталі.

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);
    }
}

Перший ifрядок перевіряє, чи будь-який компонент пакета є адміністратором пристрою (тобто, якщо він встановлений у списку Адміністратори пристроїв на сторінці " Захист " програми " Налаштування "). Якщо так, то кнопка вимкнена (затьмарена сірим кольором), тому ви не можете зупинити адміністраторів пристрою.

Потім else ifперевіряється, чи пакет вже зупинений . Тут зупинка не означає просто "не біг". Наскільки я можу сказати, пакет знаходиться в зупиненому стані, якщо ви ніколи не запускаєте з нього будь-який компонент (наприклад, запустивши його з меню) або якщо ви натиснули кнопку примусової зупинки (цей або в діалогове вікно "перестала працювати") і не запускати жоден з його компонентів знову. Якщо пакет не зупинений, кнопка увімкнена .

elseСправа охоплює рідкісні випадки , які додаток вже було зупинено і не є адміністратором пристрою. У цьому випадку це дає можливість іншим системним службам включити кнопку. Наприклад, у програмі може бути встановлений тривожний сигнал, який пізніше призведе до запуску програми, навіть із зупиненого стану. У цьому випадку кнопка буде включена. Якщо жодна інша системна служба не має підстав увімкнути кнопку, вона буде відключена.

Підсумок

Force стоп кнопка включена , якщо пакет не є адміністратором пристрою і або ви ще не примусово-зупинили цей додаток або у вас є сила, зупинили його , але система обслуговування думає , що це буде працювати знову.

Якщо програма запущена (і це не адміністратор пристрою), кнопка Примусово зупинити , безумовно, буде увімкнено, але кнопка "Увімкнено" не означає, що програма працює.


Чудово, що ви показуєте нам код, який визначає, відображається чи ні кнопка. Для такого розробника, як я, ідеальна відповідь. Але дійсно, це лише половина відповіді. Ви не показуєте, що відбувається, коли ви насправді натискаєте кнопку.
Іван Панкович

2

Android підтримує 4 типи програм у своїй пам'яті. Я не пам'ятаю всіх, окрім запущеного та кешованого фону - це 2 з них ... (доступ до кешованого фону можна отримати, натиснувши кнопку апаратного меню на вкладці запуску та вибравши опцію, що з'явилася)

Так що, хоча це не може бути помічено в запущених процесах, він не зовсім мертвий.

Переважно це має бути кешований фоновий процес.

Крім того, про менеджерів завдань .. Її не рекомендується використовувати як Android, який жорстко кодується для керування програмами ефективно.App/Task вбивці насправді швидше розряджають акумулятор, оскільки після того, як вбивця вбиває додатки, згідно алгоритму андроїд слідує, вони будуть запущені знову ж таки! (а додатки займають набагато більше пам’яті при запуску, ніж в ідеальному стані), таким чином це стає циклом і розряджає акумулятор.

тож кнопка примусового закриття активна в основному запущених і кешованих процесах і може існувати в небагатьох додатках, які знаходяться в інших двох типах процесів!

в інших додатках його сірий!


1
Це більше ніж 4 типи ( докладніші пояснення див. У розділі Розуміння додатків та життєвих циклів Android ). Але ці класи не мають нічого спільного з кнопкою «примусової зупинки», принаймні не безпосередньо (дивіться мою відповідь : активна кнопка «примусової зупинки» просто означає, що зараз працює або сам додаток, або одна з його зареєстрованих служб).
Izzy

-2

Ця кнопка активна для програм, які працюють або працюють з останнього разу, коли ви запустили свій пристрій.

Android не вбиває програми повністю, коли ви виходите з нього, ця кнопка повністю закриває додаток і видаляє його зі стека (програми, що працюють), також ця кнопка звільняє пам'ять, яку використовує додаток.

Немає способу перерахувати запущені програми, також кнопки, які працюють у фоновому режимі, мають цю кнопку.

У магазині Play є безкоштовні програми-вбивці, щоб автоматично керувати пам'яттю вашого пристрою.


3
Хоча основна інформація правильна: краще видаліть частину про "автоматичних вбивць". Можливо, був час, коли вони були потрібні (до Android 2.x), але вони є абсолютно непродуктивними і в основному негативно впливають на час роботи акумулятора.
Іззі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.