Закрытие приложения в фоновом режиме - PullRequest
1 голос
/ 27 марта 2011

Предположим, у меня есть приложение для iOS, которое фактически работает в фоновом режиме (по одной из нескольких юридических причин, таких как фоновое аудио, запрошенное время и т. Д.).Что может заставить ОС закрыть (убить) это приложение вместо того, чтобы просто запустить или приостановить его?Как я могу избежать их?Как я могу надежно вызвать их (в этом приложении) с помощью общедоступных API?

Ответы [ 2 ]

3 голосов
/ 27 марта 2011

Ваше приложение может быть уничтожено, если оно использует слишком много памяти, если оно не вызывает endBackgroundTask:, когда вызывается обработчик истечения (указанный при вызове beginBackgroundTaskWithExpirationHandler:), если пользователь явно убивает его, если приложение выдает исключение, вызывает exit, запускает EXC_BAD_ACCESS или другой сигнал и так далее. Возможно, есть и другие причины.

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

Нет способа надежно активировать «пользователь явно убивает приложение». Для остальных вы можете выделить тонны памяти, отказаться от вызова endBackgroundTask:, использовать [NSException raise:... format:...], вызвать exit или создать случайные указатели мусора и следовать им. Вы, вероятно, не должны делать ничего из этого.

0 голосов
/ 27 марта 2011

Я не уверен, что вы спрашиваете - похоже, вы хотите иметь возможность завершать другие приложения, что (к счастью) просто невозможно на платформе iOS из-за песочницы, и т.д.

Однако наиболее вероятная причина, по которой ваше собственное приложение будет убито, пока оно работает в фоновом режиме, - это если оно использует большой объем памяти и т. Д. И не отвечает на вызовы didReceiveMemoryWarning, теряя ресурсы, которые не требуется больше.

С точки зрения их автоматического запуска самый простой способ - использовать опцию «Имитация предупреждения о памяти» в меню «Аппаратное обеспечение» на симуляторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...