В Ice Cream Sandwich (ICS) ОС классифицирует ваше приложение по категориям, и каждая категория имеет свой собственный порог, который ОС использует для определения того, какое приложение следует закрыть первым, когда ему не хватает памяти.
Кого-нибудь из вас раздражало, скажем, то, что вы запускали таймер в фоновом режиме, чтобы измерить время, прошедшее с чего-то, а затем открывали еще несколько приложений и возвращались к своему таймеру только для того, чтобы увидеть, что он был сброшен или закрыт? Я имею в виду, серьезно, это действительно мучительно раздражает.
Есть ли способ заставить приложение работать в фоновом режиме, несмотря ни на что, даже когда в ОС заканчивается память?
Принятый ответ оказался неверным или устаревшим. Модуль «Настройки приложения» для приложения Xposed позволяет указать для каждого приложения, чтобы предотвратить уничтожение или освобождение приложений:
http://repo.xposed.info/module/de.robv.android.xposed.installer
http://repo.xposed.info/module/de.robv.android.xposed.mods.appsettings
Конечно, следует проявлять ответственную осторожность при игре с приложениями, изменяющими поведение такого низкого уровня.
Простой ответ: нет. Android всегда использует OOM (Out-Of-Memory), отдавая приоритет освобождению неиспользуемой памяти. Вы можете изменить приоритеты приложений (по крайней мере, до перезагрузки) с помощью некоторых диспетчеров задач, но даже в этом случае, если памяти не хватает, приложения в фоновом режиме начинают умирать.
Подумайте о таком сценарии: вы загрузили плохо написанное приложение, которое запускается при загрузке, вызывает переполнение буфера и занимает всю вашу память. Обычно это приложение закрывается, но если оно остается открытым, оно блокирует ваш телефон до перезагрузки, а после этого запускается снова и снова и т. д.
Некоторые таймеры используют службы с высоким приоритетом, чтобы избежать этой проблемы, но если вы запустите достаточное количество высокопроизводительных ресурсоемких приложений, когда таймер находится в фоновом режиме, он в конечном итоге остановится.
LinkedList
, который не ограничен Integer.MAX_VALUE
своей структурой и может динамически увеличиваться.Integer.MAX_VALUE
. Почему вы думаете, что все ограничено в Integer.MAX_VALUE
любом случае?Нет. Тем не менее, на ум приходят два метода решения проблемы, но оба они могут быть реализованы только разработчиком: первый — отображать уведомление, Android будет давать приложениям, которые делают это, более высокий приоритет, чем другим. Второй — сохранить время начала, поэтому, когда таймер в конечном итоге перезапустится, он не будет сброшен.
onSaveInstanceState
и onRestoreInstanceState
для сохранения состояния приложения, включая информацию о таймере. Не нужно работать на переднем плане. Даже если это будильник, вы можете использовать AlarmManager
его, чтобы убедиться, что он сработает позже. Единственная причина, по которой следует использовать передний план, заключается в следующем: 1. У вас есть какая-то активная активность на переднем плане, например, воспроизведение музыки или показ видео. 2. Вы хотите, чтобы соединение для передачи данных оставалось открытым (например, IMAP IDLE (push)).1-й метод: -- Если вы сделаете Sticky Thread в программе, да, вы можете заставить свою программу работать. Однако помните, что пользователь в режиме расширенных настроек может остановить фоновые приложения. Однако, если вы напишете липкую нить таким образом, чтобы она начиналась при любом событии, тогда это может быть достигнуто.
2-й метод: ЕСЛИ пользователь не имеет root-прав на Android, и вы хотите запустить приложение в фоновом режиме. используйте сценарий SL4 в фоновом режиме из приложения. используйте сценарий, который будет выполнять фоновые проверки и программы, и напишите внешний интерфейс, чтобы показать что-то еще.
Например: В большинстве игровых движков это встроено. Они подключаются к серверам, даже если пользователь выключил приложение. Причина, по которой движок создает несколько сценариев в телефоне, которые случайным образом проверяются при любых конкретных событиях, и что TRIGGER используется для непрерывного запуска вашего приложения на фоне переднего плана.
*** Извините за опечатки .. проверка орфографии недоступна. Надеюсь, ты достигнешь того, что собирался получить.
Иногда есть возможность заблокировать приложение. Это предотвращает уничтожение или остановку этого приложения в телефоне.
Опция блокировки недоступна в самой ОС, может помочь использование некоторых сторонних приложений, таких как GO Task Manager и т. д.
Поток