iOS: как определить, когда приложение будет приостановлено?
Я хочу знать, когда мое приложение будет приостановлено? Состояние неактивности в течение определенного периода времени или прекращения действия пользователем. Мне это нужно, потому что мне нужно закрыть соединение через веб-сокет. Я хочу сохранить соединение, пока приложение находится в фоновом состоянии, хотя.
Как мне это сделать?
Спасибо
РЕДАКТИРОВАТЬ: Это не повторяющийся вопрос, другие вопросы касаются, когда приложение больше не активно, я хотел бы знать, что приложение было прекращено.
3 ответа
В вашем файле AppDelegate.m этот метод будет вызываться, когда пользователь нажимает кнопку "Домой" и приложение переходит в фоновый режим (здесь вы можете поддерживать соединение в рабочем состоянии, но вам следует прочитать документацию Apple относительно фоновых задач, поскольку ваше соединение не может быть живым всегда, если приложение остается в фоновом режиме. Существуют и другие способы поддерживать ваше приложение в актуальном состоянии (например, обновление при push-уведомлениях и т. д.):
- (void)applicationWillResignActive:(UIApplication *)application
{
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}
и этот метод будет вызван, когда приложение будет закрыто (полностью закрыто от многозадачности).
- (void)applicationWillTerminate:(UIApplication *)application
{
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
Вы можете обрабатывать свои соединения в рамках этих методов.
Вы также можете добавить уведомления наблюдателя
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(receiveSuspendNotification:)
name:UIApplicationWillResignActiveNotification
object:nil];
- (void) receiveSuspendNotification:(NSNotification*)notif
{
}
метод будет вызван, и вы можете выполнять необходимые задачи.
Если ваше приложение не зарегистрировало работу в фоновом режиме, то при получении UIApplicationDidEnterBackgroundNotification ваше приложение будет приостановлено в оперативной памяти.