applicationWillTerminate и фон: ужасно запутался

Я так понимаю, что applicationWillTerminate больше не вызывается в iOS4, практически. Но у меня такая ситуация:

  • моя аудиокнига переходит в фоновый режим и продолжает воспроизводить звук;
  • до версии 3.x SDK я сохранял точку прослушивания файла MP3 в applicationWillTerminate;
  • теперь мне сказали сохранить это сохранение в applicationWillTerminate (для iPhone 3G) и реализовать тот же метод в applicationDidEnterBackground: но это НЕ сохраняет точку, в которой пользователь был в конце, а только точку, когда он вошел в фон ...

Но в какой момент или, лучше сказать, вызванный метод, когда пользователь выходит из приложения из док-станции? Это существует?

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

Я повторяю: applicationDidEnterBackground мне не помогает, потому что, когда пользователь входит в фоновый режим, он может оставаться в этом положении долгое время, слушая аудиокнигу, и когда он снова запускает приложение, после его закрытия, я имею в виду, что он будет найти положение аудиофайла, когда он вошел в фоновый режим…

Я действительно смущен…

Спасибо за вашу помощь!


person Fabio Ricci    schedule 10.07.2010    source источник


Ответы (1)


Вы должны автоматически сохранять место воспроизведения в applicationWillResignActive:, applicationDidEnterBackground: независимо от того, продолжает ли звук воспроизводиться или нет. Затем поместите еще одно сохранение в applicationWillTerminate. Таким образом, последнее место воспроизведения сохраняется независимо от того, что происходит дальше. Следующее событие просто перезаписывает сохраненное место воспроизведения, чтобы обновить его.

Еще лучшим вариантом было бы, чтобы сам объект аудиоплеера запускал сохранение всякий раз, когда оно прерывается, например [AVAudioPlayerDelegate audioPlayerBeginInterruption:] или подобное. Это может потребовать дополнительной работы, но это гарантирует, что место воспроизведения всегда сохранялось, независимо от причины прерывания.

person TechZen    schedule 10.07.2010
comment
Использование прерывания аудиоплеера кажется очень хорошей идеей, чтобы уловить это. +1, отличный ответ! - person bddckr; 10.07.2010