Предупреждение applicationDidReceiveMemoryWarning не работает в фоновом режиме

#ios #didreceivememorywarning

#iOS #didreceivememorywarning

Вопрос:

Я попытался смоделировать предупреждение о памяти в iOS Simulator, и оказалось, что когда приложение работало в фоновом режиме, функция в этот момент не вызывалась, но после того, как приложение снова стало активным, вызывалось applicationDidReceiveMemoryWarning .

При тестировании с помощью Instrument: Activity Monitor мое приложение не освобождало память в фоновом режиме, в то время как потребление памяти другими приложениями уменьшалось.

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

 - (void)applicationDidEnterBackground:(UIApplication *)application
{
    [glView applicationDidEnterBackground:application];

    // Function works if it's called from here, but not what I want.
    [self applicationDidReceiveMemoryWarning:application];
}

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
    [glView applicationDidReceiveMemoryWarning:application];
}
 

Как мне это исправить?

Ответ №1:

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