Вдогонку по многозадачности в iOS4

Порыл я соответствующую информацию в SDK. В iOS4 добавили два новых состояния для приложения -- Background и Suspended.
Первое -- это возможность работать в фоне (background execution), ограничившись набором из нескольких допустимых сценариев location/voip/audio, и будучи крайне ограниченным в возможностях (к примеру, нельзя использовать шареные ресурсы, вроде адресной книги). Как я понимаю, даже с такими возможностями можно делать некоторые интересные вещи, другое дело, что цензоры-нацисты, наверняка будут срезать приложения, которые будут использовать этот режим не по прямому назначению, и именно для этого ввели эти, очевидно глупые и условные сценарии.
Второе -- это когда приложение все-таки остается в памяти, но не выполняется, и при нехватке памяти будет прибито. При уходе в этот режим приложению дают возможность слить информацию о своем состоянии на диск, чтобы потом можно было "восстановиться", если все-таки система решит прибить задачу.
Режим этот, на самом деле, довольно полезен. При наличии свободной памяти он позволяет вам очень быстро получать доступ к приложению, которое очень долго стартует, например, к картам или словарю. Запоминание состояния при этом, в принципе, вторично.
У меня сложилось мнение, что сейчас режим Suspended на iPhone 3Gs для старых приложений не работает вовсе. Уход в фон есть просто закрытие приложение. А восстановление -- обычный запуск. Поэтому "интересную" панель с задачами, про которую я писал вчера, можно трактовать лишь как набор ярлыков для недавно запущенных приложений, из которых вы типа не вышли.
Вопрос, почему режим Suspended не работает довольно интересный.
Понятно, что он не работает, если в системе критически мало памяти, но я не думаю, что в том же iPhone 3Gs это перманентная ситуация.
Этот режим отключили для всех приложений, собранных для ОС, ниже четвертой версии? А зачем? Я не вижу смысла технических ограничений из-за которых Apple была бы вынуждена это сделать. Причины политические, стимул к пересборке под новую ОС?
Или его специально отключили для всех старых приложений на iPhone 3Gs, но разрешили на iPhone 4? Умышленное обрезание функциональности, которое, как всегда, свалят на hardware limitations.
Если у кого-то есть возможность провести ряд экспериментов по этой теме -- было бы очень интересно посмотреть на результаты.
Мораль? Мораль простая. Мнимая забота о пользователях (ах, батарейка!) -- тот еще гемор разработчикам.
SDK Background Execution --
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html
зы. Сегодня на M-R наконец-то вышел материал по iOS4 от Кузьмина.
Отметил про себя одну интересную вещь в психологии яблочного фаната. Тормоза и лаги новой версии ОС на девайсе годичной давности (который, кстати, позиционировался как супер быстрый!) воспринимается как данность, главное, чтобы все новые рулезы на следующем айфоне работали хорошо. Т.е. человек год назад штуку зелени выбросил, и уже, не задумываясь, приготовил еще одну, для покупки iPhone 4.
Оно -- http://www.mobile-review.com/apple/articles/ios4.shtml
зы2. Сохранение состояния приложения на диск -- не самая тривиальная задача для разработчика. Некоторые даже считают, что это главная проблема в современном программировании, и более того, пытаются решить ее кардинально, на уровне ОС.
Угу, я намекают на известный проект -- Phantom.
|
</> |