- ActivityManager.forceStopPackage () из диспетчера задач
- Что означает кнопка «Force stop»?
- Резюме
- Android force stop package
- Русские Блоги
- Использование команды Am
- I. Обзор
- Два, команда Am
- Три, варианты
- 3.1 Начало занятия
- 3.2 Затянуть память
- 3.3 Другое
- Четыре, намерение
- 4.1 Общие параметры
- 4.2 Дополнительные параметры
ActivityManager.forceStopPackage () из диспетчера задач
Это моя первая публикация здесь. Я не уверен, что это подходящее место, чтобы задать этот вопрос, но я, похоже, не нашел других подходящих мест. Вот мой вопрос в любом случае.
Я понимаю, что API ActivityManager.forceStopPackage() является внутренним и может быть вызван только из системного процесса. Тем не менее, меня озадачивает, что встроенное приложение диспетчера задач (с именем пакета com.motorola.PerformanceManager ) на моем телефоне Motorola Motorola может напрямую вызвать его без системного процесса. Есть две вещи, которые я проверил.
Во-первых, это несистемный процесс из команды ps :
Во-вторых, он действительно вызывает API ActivityManager.forceStopPackage() из своего файла odex (декомпилируется в smali, затем в dex, а затем в java). Из кода smali уже ясно, что он вызывает этот API.
Я также проверил его файл AndroidManifest.xml который для меня ничего особенного (форум ошибочно распознает содержимое как URL-адреса и мешает мне публиковать их).
Файл манифеста включает в себя разрешение android.permission.FORCE_STOP_PACKAGES которое должно быть системным. Не-системное приложение все равно получит ошибку отказа в разрешении даже с этим разрешением. Я попытался использовать отражение, чтобы получить доступ к этому API с разрешением android.permission.FORCE_STOP_PACKAGES но все же получить ошибку времени выполнения.
Теперь, как встроенное приложение Task Manager может вызвать внутренний API без системного процесса. Одна из возможностей заключается в том, что приложение подписывается с одним и тем же закрытым ключом платформы. Однако я не уверен, как я могу это проверить. Кроме того, он все еще должен быть системным процессом с дополнительными описаниями в файле манифеста.
Надеюсь, кто-то может ответить на мой вопрос. Благодарю.
Разрешение «android.permission.FORCE_STOP_PACKAGES» защищено сигнатурой платформы.
Если у вас есть исходный код Android, то проверьте декларацию разрешения:
Вы можете видеть, что его уровень защиты является сигнатурой, а затем проверить документацию SDK для объяснения:
«Подпись … Разрешение, которое система предоставляет только в том случае, если запрашивающее приложение подписано с тем же сертификатом, что и приложение, объявившее разрешение. Если сертификаты совпадают, система автоматически предоставляет разрешение без уведомления пользователя или запроса Явное одобрение «
Разрешение объявляется фреймворком-res, который подписывается сигнатурой платформы, поэтому приложение, которое хочет использовать разрешение, также подписывается с той же подписью.
Источник
Что означает кнопка «Force stop»?
Когда я иду в, Settings > Applications > Manage Applications > Downloaded я вижу список приложений. Если я выбираю несколько приложений, я вижу активную кнопку «Force stop», но в некоторых приложениях эта кнопка недоступна.
Что это означает? Что произойдет, если я нажму эту кнопку?
Эта кнопка не может означать, что приложение запущено, поскольку приложения с этой кнопкой не указаны в Running разделе.
Могу ли я перечислить только приложения с Force stop активной кнопкой и удалить их?
Версия Android: 3.2
Как сказано в моем комментарии к ответу paco, информация, которую он предоставил, в основном верна: большинство приложений не завершают работу полностью, если вы их оставляете, и ни одно приложение не должно закрываться, если вы покидаете его с помощью кнопки «Домой». Кроме того, в некоторых приложениях работают фоновые службы, которые пользователь не может закрыть.
Теперь в некоторых ситуациях вам нужно остановить приложение (включая его фоновые службы) — например, если вы хотите удалить это приложение (или, в случае системного приложения, его обновления). Вы заметите это, когда кнопка «Force Stop» активна, кнопка «Удалить» (или «Удалить») будет выделена серым цветом, но последняя активируется, когда вы остановили приложение с помощью «Force Stop». (Если обе кнопки выделены серым цветом, вы можете сказать, что это системное приложение, которое вы не можете удалить).
Кстати: если кнопка «Force Stop» выделена серым цветом (как вы пометили ее «затемненной»), это означает, что приложение в данный момент не запущено и не запущено ни одной службы (в данный момент).
Код позади Force стоп кнопка является сложным и без документов. Я воспроизведу это дословно, а затем пройдусь по одному фрагменту за раз.
В первой if строке проверяется, является ли какой-либо компонент пакета администратором устройства (т. Е. Проверяется ли он в списке администраторов устройства на странице « Безопасность» приложения « Настройки» ). Если это так, кнопка отключена ( неактивна ), поэтому вы не можете остановить администраторов устройства.
Затем else if проверяет, остановлен ли пакет . Здесь остановлено не просто означает «не работает». Насколько я могу судить, пакет находится в состоянии останова, если вы никогда не запускали из него какой-либо компонент (например, запускаете его из меню), или если вы нажали кнопку принудительной остановки (этот или в диалоговое окно «перестал работать») и больше не запускать какие-либо его компоненты. Если пакет не был остановлен, кнопка включена .
else Дело охватывает редкие случаи , которые приложение уже было остановлено и не является администратором устройства. В этом случае это дает другим системным службам возможность включить кнопку. Например, приложение может иметь установленный и ожидающий сигнал тревоги, что впоследствии приведет к повторному запуску приложения даже из остановленного состояния. В этом случае кнопка будет включена. Если ни у какой другой системной службы нет причины для включения кнопки, она будет отключена.
Резюме
Force стоп кнопка включена , если пакет не является администратором устройства и либо вы еще не принудительно-остановили это приложение или у вас есть сила, остановили его , но система обслуживания думает , что это будет работать снова.
Если приложение работает (и это не администратор устройства), кнопка принудительной остановки обязательно будет включена, но эта кнопка не означает, что приложение запущено.
Android поддерживает 4 типа приложений в своей памяти. Я не помню, чтобы все, кроме работающего и кэшированного фона, — это два из них . (доступ к кэшированному фону можно получить, нажав кнопку аппаратного меню на вкладке « Запуск » и выбрав всплывающую опцию)
Таким образом, хотя это не может быть видно в запущенных процессах, оно не совсем мертвое.
В основном это должно быть в кэшированных фоновых процессах.
Кроме того, о менеджерах задач. Не рекомендуется использовать их, так как Android жестко запрограммирован для эффективного управления приложениями. Фактически, приложение-убийцы приложений скорее разряжают батарею, так как после того, как программа-убийца убивает приложения, согласно алгоритму Android, они будут запущены. снова! (и приложения занимают больше памяти при запуске, чем в идеальном состоянии), таким образом, это становится циклом и разряжает батарею.
поэтому кнопка принудительного закрытия активна в основном на запущенных и кэшированных процессах и может существовать в очень немногих приложениях, которые находятся в двух других типах процессов!
в других приложениях его серый!
Эта кнопка активна для приложений, которые работают или работают с момента последнего запуска вашего устройства.
Android не убивает приложения полностью, когда вы выходите из него, эта кнопка полностью закрывает приложение и удаляет его из стека (запущенные приложения), также эта кнопка освобождает память, используемую приложением.
Невозможно отобразить список запущенных приложений, эта кнопка также доступна для приложений, работающих в фоновом режиме.
В Play Store есть бесплатные приложения-убийцы для автоматического управления памятью вашего устройства.
Источник
Android force stop package
Сообщение отредактировал sasha9182 — 04.02.21, 23:20
Ну же,мне нужна ваша помощь.Я опустил руки и смирился с тем что наши телефоны плохо дружат с градиентами.Ещё service.jar нужно разбирать,и редактировать там classes.dex,чего я не умею.
Сообщение отредактировал Димар — 01.02.16, 10:36
Насчет services.jar и classes.dex посмотри как я делал
а насчет градиента сам ничего толкового не добился.
Сообщение отредактировал sk0t — 20.08.14, 17:56
sk0t,
спасибо,нашел уже,и мне кажется что там не все.хочу заменить цвет текста на кнопке,и он видимо хранится в фреймворке,в файле btn_default.xml.но он не хочет открываться,или я не правильно его вытащил.просто как из архива.
фреймворк не хочет распаковываться.
Сообщение отредактировал 12enie — 28.10.10, 22:35
Сообщение отредактировал sk0t — 29.10.10, 00:12
Извини что не по теме не много, я редактирую LauncherProPlus, всё бы ничего вот только пересобранный файл launcher.xml в папке /res/layout-port/ не даёт лаунчеру запустится вылетая в ФК, может у тебя есть решение проблемы? Был бы очень благодарен!
Сообщение отредактировал Димар — 15.01.16, 20:25
Простые вопросы:
apk подписан?
что менялось в файле?
пересобран означает — разобран с помощью apk-tool, отредактирован, и собран с помощью apk-tool?
ещё по умолчанию собранный файл находится в папка куда распаковывался apk/dist и называется out.apk
Сообщение отредактировал sk0t — 29.10.10, 16:50
java -jar apktool.jar d -s file.apk foldername
tools.zip ( 1.13 КБ )
в архиве три файла
apktool-d.cmd — переносишь на него apk-файл содержащий классы(classes.dex): разбирает его в папку с тем же именем (phone.apk -> phone)
apktool-d-s.cmd — переносишь на него apk-файл не содержащий классы: разбирает его в папку с тем же именем (framework-res.apk -> framework-res)
apktool-b.cmd — переносишь на него папку с отредактированными файлами: собирает её в apk с именем out.apk (framework-res -> framework-res/dist/out.apk)
соответственно apktool.jar должен быть в той же папке.
2 Rang3r
скинь исходный apk и тот который ФК вызывает
PS 2 12enie
открываешь файл framework-res\res\values\styles.xml
ищешь там примерно такое (btn_default)
а здесь уже задается сам цвет
Первые два знака — прозрачность, остальные шесть — цвет в RGB
#ff000000 — ff — непрозрачный, 000000 — черный
можно изменить в любом из файлов
Сообщение отредактировал sk0t — 29.10.10, 20:35
sk0t, скинул в ЛС. Ответить можно и здесь, может кому-нибудь ещё тоже пригодится ответ :happy:
Сообщение отредактировал Rang3r — 29.10.10, 20:59
Источник
Русские Блоги
Использование команды Am
I. Обзор
Как разработчик, я считаю, что команда adb не будет незнакомой. Затем после подключения мобильного телефона к adb многие операции можно выполнять с помощью команды am:
(1) Позвоните по телефону 10086
(2) Откройте сайт www.gityuan.com
(3) ПускActivity: Стартовый пакет называется com.yuanhh.app , Основным видом деятельности является .MainActivity , И дополнительные данные заканчиваются на «website«Это ключ, а« yuanh.com »- это значение. Хотя выполнить эту функцию с помощью кода Java несложно, по крайней мере, требуется среда Android. С adb вам нужно только ввести следующие команды в окне adb:
Команда am также может запускать Service, Broadcast, kill process, monitor и др. Эти функции очень удобны для отладки программы.Далее я расскажу о все более и более подробных функциях am.
Два, команда Am
команда | особенности | Реализация |
---|---|---|
am start [options ] > | Начать деятельность | startActivityAsUser |
am startservice > | Начать службу | startService |
am stopservice > | Остановить службу | stopService |
am broadcast > | Отправить трансляцию | broadcastIntent |
am kill > | Убить указанный фоновый процесс | killBackgroundProcesses |
am kill-all | Убить все фоновые процессы | killAllBackgroundProcesses |
am force-stop > | Убить процесс | forceStopPackage |
am hang | Система зависла | hang |
am restart | перезагружать | restart |
am bug-report | Создать отчет об ошибке | requestBugReport |
am dumpheap > > | Вывести информацию о куче pid процесса в файл | dumpheap |
am send-trim-memory > > | Затяните память процесса | setProcessMemoryTrimLevel |
am monitor | монитор | MyActivityController.run |
Фактическая реализация команды am находится в Am.java, и она почти всегда вызывается в конце ActivityManagerService Соответствующий метод для завершения, am monitor Кроме. Например, команды, представленные в предыдущем обзоре am start -a android.intent.action.VIEW -d http://gityuan.com , Starting Acitivty, наконец, вызывает метод startActivityAsUser () класса ActivityManagerService для завершения. Другой пример am kill-all Command, окончательная работа по реализации завершается методом killBackgroundProcesses () ActivityManagerService.
Далее поговорим о [options ]с > Смысл параметра и как правильно получить значение.
Три, варианты
3.1 Начало занятия
В основном для запуска команды Activity am start [options] Используйте параметр options, а затем укажите параметр [options] команды Activity:
- -D: разрешить функцию отладки
- -W: дождаться запуска приложения
- -R >: Повторить действие COUNT раз
- -S: перед запуском действия вызовите метод forceStopPackage (), чтобы принудительно остановить приложение.
- —Opengl-trace: запустить, чтобы получить трассировку функции OpenGL
- –user > | Текущий: укажите пользователя для запуска приложения, по умолчанию — текущий пользователь.
- –start-profiler >: Запустить профилировщик и отправить результат в >;
- -P >: Аналогично —start-profiler, разница в том, что когда приложение переходит в состояние ожидания, профилирование останавливается.
- —Sampling INTERVAL: установить временной интервал выборки профилировщика, единицы мс;
Принцип реализации запуска Activity: если есть параметр -W, вызовите метод startActivityAndWait () для запуска, в противном случае startActivityAsUser ().
3.2 Затянуть память
Например: для процесса с pid = 12345 введите команду уплотнения памяти с level = RUNNING_LOW
Тогда диапазон значений уровня: HIDDEN, RUNNING_MODERATE, BACKGROUND, RUNNING_LOW, MODERATE, RUNNING_CRITICAL, COMPLETE.
3.3 Другое
Для подкоманды am можно установить дополнительные параметры startservice, stopservice, broadcast, kill, profile start, profile stop, dumpheap. —user . Большинство мобильных телефонов, представленных в настоящее время на рынке, работают в однопользовательском режиме, поэтому вы можете игнорировать этот параметр и использовать по умолчанию текущего пользователя.
Например: start услуга пользователя.
Четыре, намерение
Существует множество параметров и флагов Intent.Для удобства эта статья разделена на 3 типа параметров: часто используемые параметры, дополнительные параметры и параметры флагов.
4.1 Общие параметры
: Задайте имя пакета и реализуйте принцип Intent.setPackage ();
am start -a android.intent.action.VIEW
am start -n com.yuanhh.app/.MainActivity
am start -d content://contacts/people/1
am start -t image/png
am start -c android.intent.category.APP_CONTACTS
4.2 Дополнительные параметры
(1). Основные типы
параметр | -e/-es | -esn | -ez | -ei | -el | -ef | -eu | -ecn |
Типы | String | (String)null | boolean | int | long | float | uri | component |
Например, параметр es является аббревиатурой Extra String. Примеры:
Вот -es website gityuan.com , Эквивалент Intent.putExtra («веб-сайт», «gityuan.com»);
параметр | -esa | -eia | -ela | -efa |
Тип массива | String[] | int[] | long[] | float[] |
Например, параметр eia является аббревиатурой от Extra int array, а несколько значений значений разделяются запятыми. Примеры:
Вот -ela weekday 1,2,3,4,5 , Эквивалентно Intent.putExtra («будний день», новый int [] <1,2,3,4,5>);
(3). Тип ArrayList
параметр | -esal | -eial | -elal | -efal |
Тип списка | String | int | long | float |
Например, параметр efal является аббревиатурой от Extra float Array List, а несколько значений значений разделяются запятыми. Примеры:
Вот -efal nums 1.2,2.2 , Эквивалентно созданию сначала переменной ArrayList, а затем помещению второго параметра через putExtra.
Источник