Что означает «кнопка остановки»?

Когда я перейду к Settings > Applications > Manage Applications > Downloaded Я вижу список приложений. Если я выбираю некоторые приложения, я вижу кнопку «Силовая остановка», но некоторые приложения имеют тусклую кнопку.

Что это значит? Что произойдет, если я нажму эту кнопку?

Эта кнопка не может означать запуск приложения, поскольку приложения с этой кнопкой не указаны в разделе Running.

Можно ли перечислить только те приложения, в которых активна кнопка Force stop, и удалить их?


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

26 голосов | спросил Suzan Cioc 21 32012vEurope/Moscow11bEurope/MoscowWed, 21 Nov 2012 00:45:00 +0400 2012, 00:45:00

4 ответа


18

Как сказано в моем комментарии к ответу paco, информация, которую он дал, в основном верна: большинство приложений не выходят полностью, если вы их оставляете, и ни одно приложение не должно выйти, если вы оставите его через кнопку «Главная». Кроме того, в некоторых приложениях есть фоновые службы, которые пользователь иначе не может выйти.

Теперь есть некоторые ситуации, когда вам нужно приложение (включая его фоновые службы), которое нужно остановить - например, если вы хотите удалить это приложение (или, в случае системного приложения, его обновления). Вы заметите это, когда кнопка «Силовая остановка» активна, кнопка «Удалить» (или «Удалить») недоступна, но последняя активируется, когда вы остановили приложение через «Силовой останов». (Если обе кнопки выделены серым цветом, вы можете сказать, что это системное приложение, кстати, которое вы не можете удалить).

Btw: Если кнопка «Силовая остановка» выделена серым цветом («тускнеет», как вы ее выразили), это означает, что приложение в настоящее время не работает, а также не работает какой-либо сервис (в данный момент).

ответил Izzy 21 32012vEurope/Moscow11bEurope/MoscowWed, 21 Nov 2012 01:45:53 +0400 2012, 01:45:53
14

код Силовая остановка ) является сложной и недокументированной. Я воспроизведу его дословно, а затем пройду через него по одной части за раз.

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 проверяет, является ли какой-либо компонент этого пакета устройством admin (то есть, если он установлен в Администраторы устройств на странице Безопасность приложения Настройки ). Если это так, кнопка отключена (выделена серым цветом), поэтому вы не можете остановить администраторов устройств.

Затем else if проверяет, был ли пакет уже остановлен . Здесь остановлено не просто означает «не работает». Насколько я могу судить, пакет находится в состоянии stopped , если вы никогда не запускаете из него какой-либо компонент (например, запуская его из меню) или если вы нажали Кнопка принудительной остановки (эта или в диалоговом окне «перестает работать») и не запускайте ни один из ее компонентов снова. Если пакет не был остановлен, кнопка включена .

Случай else охватывает редкий случай, когда приложение имеет , и не является администратором устройства. В этом случае он дает другим системным службам возможность включить кнопку. Например, в приложении может быть установлен будильник и ожидается, что позднее приведет к запуску приложения даже из состояния остановки. В этом случае кнопка будет включена. Если никакая другая системная служба не имеет причины включить кнопку, она будет отключена.

Резюме

Кнопка Силовая остановка включена, если пакет не является администратором устройства и , либо вы еще не принудительно остановили это приложение, либо у вас есть принудительная остановка но системный сервис считает, что он снова запустит его.

Если приложение запущено (и оно не является администратором устройства), кнопка Force stop определенно будет включена, но кнопка, которая включена, не означает, что приложение запущено.

ответил Dan Hulme 28 J0000006Europe/Moscow 2013, 14:35:40
2

Android поддерживает 4 типа приложений в своей памяти. Я не помню всех, кроме running , а cached background - 2 из них ... (доступ к кешированному фону можно получить, нажав кнопку аппаратного меню, когда в running и выбрав всплывающую опцию)

Таким образом, хотя он не может быть замечен в процессах running , он не полностью мертв.

В основном это должно быть в кэшированном фоне .

также, о менеджерах задач. Не рекомендуется использовать их, так как андроид был жестко управляемым для эффективного управления приложениями. Убийцы на самом деле скорее разряжают аккумулятор, так как после убийства убивает приложения, в соответствии с алгоритмом android следует, они (и приложения занимают больше памяти при запуске, чем в идеальном состоянии), таким образом, он становится циклом и истощает батарею.

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

в других приложениях его greyd out!

ответил Nirmik 21 32012vEurope/Moscow11bEurope/MoscowWed, 21 Nov 2012 01:47:45 +0400 2012, 01:47:45
-2

Эта кнопка активна для приложений, которые запущены или запущены с момента последнего запуска вашего устройства.

Android не убивает приложения полностью, когда вы выходите из него, эта кнопка предназначена для полного закрытия приложения и удаления его из стека (приложения работают), а также эта кнопка освобождает память, используемую приложением.

Невозможно перечислить запущенные приложения, а также приложения, работающие в фоновом режиме, с этой кнопкой.

В Play Маркете есть бесплатные приложения-убийцы, чтобы автоматически управлять памятью вашего устройства.

ответил pacoespinoza 21 32012vEurope/Moscow11bEurope/MoscowWed, 21 Nov 2012 01:07:15 +0400 2012, 01:07:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132