Как я могу предотвратить гибель приложений во время сна?


11

У меня Droid 2. У меня длинная ресурсоемкая игра (спектральные души), которую я хотел бы оставить включенной, пока я не использую свой телефон. Если я нажму кнопку «Домой» на Android, чтобы вернуться на главный экран, а затем сразу же перезапущу игру, она будет именно там, где я остановился. То же самое, если я нажму кнопку питания, чтобы заснуть, а затем сразу же включу телефон, разблокирую и перезапущу игру.

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

У меня двоякий вопрос: как я могу получить больше информации о том, какие приложения были убиты, когда и почему, и как я могу настроить его так, чтобы это приложение продолжало работать? Мне не нужно ничего делать в фоновом режиме, я просто хочу, чтобы это было там, когда я вернусь.

Я знаком с концепцией очистки памяти Android, поскольку она необходима и ей не нужен убийца задач, но я хочу, чтобы она не убивала ЭТУ задачу, если я действительно не выйду из нее.


Я полагаю, у вас нет доступа к фактическому коду?
Нанн

Правильно, это приложения с закрытым исходным кодом, приобретенные в магазине приложений.
Джейсон Вирс

Ответы:


2

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


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

2

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


Я посмотрю и попробую, спасибо! Я отмечу любой успех или неудачу.
Джейсон Вирс,

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

1
Подождите, не помешает ли это выключению экрана? Таким образом тратить батарею?
Майкл

2

К первой части вашего вопроса;

Как я могу получить больше информации о том, какие приложения убиты, когда и почему?

Android SDK имеет быстрое суммирование памяти Android http://developer.android.com/guide/topics/fundamentals.html

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

Таким образом, Android может быть представлен как программа-убийца, когда он определяет, что вы не используете его (я нажал «Выйти» в приложении), или когда у него заканчиваются ресурсы. Например, если у вас есть 512 МБ оперативной памяти и 10 свободных, и вы запускаете приложение, которому нужно 12, оно попытается определить наименее используемое приложение, из которого оно может получить 12.

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

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

На ваш второй вопрос;

Как я могу настроить его, чтобы приложение продолжало работать?

Я не использую убийцу задач, но я уверен, что хорошие (похоже, ATK - лидер https://market.android.com/details?id=com.rechild.advancedtaskkiller&feature=search_result ) имеют исключение список. Возможно, вы внесете в белый список нужную вам игру и внесете в черный список другие процессы.

Я также не знаком с этой игрой, поэтому я не уверен, какие возможности автосохранения и тому подобное имеет. Надеюсь, я помог.


1

Как получить больше информации о том, какие приложения убиты и почему?

Вы можете подключить свой телефон к ADB ; и затем включите logcat ; сохранение вывода в файл.
В лог-файле вы будете иметь тонны информации; путем поиска вашего имени приложения; Вы можете узнать, когда его убьют.

Что вы можете сделать, чтобы предотвратить остановку системы Android?
Я не знаю; Надеюсь, и ответ будет работать.
Однако; Я хотел бы связаться с разработчиком и сообщить ему о проблеме, потому что он / она должен иметь самое легкое время, чтобы решить ее


Я собирался упомянуть решение LogCat. Просто хочу добавить, что вы тоже ищите ActivityManager (это внутренний «убийца задач» для android). Вы не можете предотвратить приложение android от убийств. Идея Android заключается в том, что если процесс приложения полностью уничтожается, приложение должно иметь возможность восстановить свое предыдущее состояние. Поэтому разработчики приложений должны убедиться, что вы не запускаете игру с самого начала.
поток
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.