В чем разница между android:persistent и android:priority? Какое влияние это оказывает на приоритет процесса?
В чем разница между android:persistent и android:priority? Какое влияние это оказывает на приоритет процесса?

Предисловие: Я удалил написанный мной apk, потому что система была занята (прил. 900): убить весь фон. После добавления android:persistent="true" в AndroidManifest.xml Сторона А попросила меня не делать этого, поэтому я все равно сделал это. чтобы изменить его с прил. Изменить приоритет на 1000.

android:persistent и android:priority — это два разных атрибута, которые используются для разных целей.

  1. android:persistent: используется для определения того, имеет ли компонент приложения постоянство. Когда для android:persistent установлено значение true, это означает, что компонент является постоянным и сохранит свое состояние даже после перезапуска устройства. Установка значения false означает, что компонент не сохраняется и будет уничтожен после перезапуска.
  2. android:priority: используется для установки приоритета компонентов. Этот атрибут обычно используется для приемников широковещательных сообщений (BroadcastReceiver). Вы можете определить порядок и приоритет получения широковещательных сообщений, установив android:priority. Более высокие значения указывают на более высокий приоритет.

Эти два свойства не оказывают прямого влияния на приоритет процесса. Приоритет процесса динамически управляется системой Android и корректируется в зависимости от активности и требований к ресурсам работающего в данный момент приложения. Система определяет приоритетность процессов на основе таких факторов, как приложение, с которым в данный момент взаимодействует пользователь, служба переднего плана и т. д.

Хотя android:priority может в некоторой степени влиять на порядок выполнения приемников вещания, он не влияет напрямую на приоритет процесса. Приоритет процесса определяется системой на основе ряда политик и алгоритмов, а не только на основе настроек свойств определенного компонента.

Что касается методов поддержания работоспособности Сервиса и повышения приоритета компонентов Сервиса в приложениях Android, его можно резюмировать следующим образом:

  1. Установите высший приоритет. В файле AndroidManifest.xml установите высший приоритет, задав для атрибута android:priority более высокое значение (например, 1000). Это работает для приемников вещания.
  2. Используйте метод startForeground(): вызовите метод startForeground() в методе onStartCommand() Службы, чтобы повысить уровень Службы до уровня приоритетного процесса. Не забудьте вызвать метод stopForeground() в методе onDestroy() службы.
  3. Возврат START_STICKY: вручную верните START_STICKY в методе onStartCommand() службы, чтобы его можно было перезапустить после уничтожения службы.
  4. Отправьте широковещательную рассылку для перезапуска Службы. Отправьте пользовательскую трансляцию в методе onDestroy() Службы и перезапустите Службу после получения широковещательной рассылки. Обратите внимание, что этот метод не гарантированно будет работать при принудительной остановке приложений в сторонних приложениях или в настройках системы.
  5. Отслеживайте системную трансляцию, чтобы определить статус службы: слушайте системную трансляцию, например сотовый. Перезапуск телефона, пробуждение интерфейса, изменение статуса приложения и т. д., чтобы определить, работает ли Сервис.
  6. Несколько приложений активируют друг друга: разные приложения привязаны друг к другу и активируют друг друга.
  7. Установите будильник для регулярного пробуждения. Используйте AlarmManager, чтобы установить будильник и периодически активировать Службу в указанное время.
  8. Включите службу переднего плана: установите службу в качестве службы переднего плана и увеличьте ее приоритет.
  9. Зацикливание бесшумного звука в Сервисе. Зацикливание бесшумного звука в Сервисе может в определенной степени улучшить эффект поддержания активности, но приведет к увеличению энергопотребления.
  10. Двойной процессGuardian (Android Действительно до версии 5.0): путем запуска независимого процесса-демона и основного процесса для мониторинга и активации друг друга.
  11. JobScheduler (введен после Android 5.0, недействителен после 8.0): используйте JobScheduler для планирования задач для регулярного пробуждения Службы.
  12. Решение для поддержания активности пикселей (не рекомендуется). Создайте прозрачное действие размером 1 пиксель и установите его в качестве плавающего окна, чтобы приложение продолжало работать.
  13. Экран блокировки трансляции, настраиваемый экран блокировки (не рекомендуется). Поддерживайте работоспособность вашего устройства, прослушивая трансляции экрана блокировки или настраивая интерфейс экрана блокировки, но этот метод может оказать негативное влияние на работу пользователя.
  14. Пробуждение с помощью стороннего push-SDK: для поддержания активности используйте механизм пробуждения стороннего push-SDK, но для этого требуется доступ к сторонним службам.
  15. Собственный уровень — это дочерний процесс: создайте дочерний процесс на собственном уровне и взаимодействуйте с основным процессом для достижения взаимной поддержки.
  16. 与сотовый телефон Связь с производителем: с сотовым Производитель телефона связывается, помещает приложение в белый список системы и снижает значение oom_adj, чтобы гарантировать, что система не уничтожит процесс.
  17. Добавьте атрибут Persistent в AndroidManifest.xml. Добавьте атрибут android:persistent="true" в узел приложения, чтобы указать, что приложение имеет постоянство.

Советы. Применимость и эффективность вышеуказанных методов могут различаться в зависимости от таких факторов, как версия Android, марка устройства и системная политика.

Действительно, используя собственное приложение в качестве системного приложения (каталог установки — /system/apk/) и устанавливая атрибут android:persistent="true", можно добиться персистентности, то есть приложение будет загружаться при запуске системы. запускается и загружается при возникновении исключения, автоматически перезапускается.

Принцип достижения такой устойчивости заключается в том, что AMS (ActivityManagerService) загружает все приложения с постоянным значением true при запуске системы. Для постоянных приложений, когда процесс приложения неожиданно завершается, AMS попытается перезапустить процесс приложения, чтобы обеспечить сохранение приложения.

Следует отметить, что этот метод применим только в том случае, если приложение установлено как системное и устанавливается в каталог /system/apk/. Путь после установки обычного приложения — /data/apk/, даже если установлен атрибут android:persistent, он не вступит в силу.

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose