Apple свърши умела работа за смекчаване на недостатъците на истинската многозадачност с iOS 4, като даде достъп на разработчиците до няколко интелигентно избрани API (като фоново аудио) и универсално запазване на състоянието.
Това ще бъде достатъчно добро за повечето хора и повечето приложения, без да причинява огромно изтичане на живота на батерията или процесора, но за съжаление новите iOS 4 API не правете нищо, за да адресирате едно от най -големите предимства на многозадачността: фонови приложения, които могат да актуализират или синхронизират информация, когато нямат фокус. С други думи, когато се появи iOS 4, приложения като четци на емисии, клиенти на Twitter и програми за незабавни съобщения ще трябва да бъдат отворени през цялото време, за да всмукват нова информация от Интернет.
В личния си блог Марко Армент - разработчик на любимия Instapaper от App Store - публикува страхотно предложение на Apple за това как да позволят на приложенията да се актуализират ефективно във фонов режим: дайте на iOS възможността да дава приоритет на периодичните мрежови заявки на трети страни.
Добавянето на още една услуга за многозадачност би решила този проблем за много типове приложения: периодична мрежова заявка. Ето как бих го направил:
• Приложението дава на системата NSURLRequest и идеален интервал на опресняване, например на всеки 30 минути, на всеки няколко часа или всеки ден.
• iOS изпълнява тази заявка, когато сметне, че трябва, и записва отговора в локален файл.
• Следващият път, когато приложението се стартира, iOS му предоставя NSData от най -новия отговор.
Изпълнението на заявката „винаги, когато прецени, че трябва“ е важно. iOS може да реши например:
• Да не се актуализира, когато батерията е изтощена, свързаността е лоша, други заявки се изпълняват, свободната памет е ниска, използването на процесора е високо или се очаква потребителят да надхвърли месечния си лимит за данни.
• Да не се актуализира толкова често, колкото иска приложението, или да увеличава интервала с течение на времето, или да регулира динамично интервала в зависимост от това колко често получава отговор 304 (Немодифициран).
• Да не се актуализира изобщо, ако заявяващото приложение не е стартирано от дълго време.
Това би позволило на Instapaper да изтегля актуализации във фонов режим и също така би било от голяма полза за RSS четци, клиенти на Twitter, чат програми, джаджи за времето и новини и огромен брой други приложения, които понастоящем не могат да получат голяма полза от iOS “ многозадачност.
Със сигурност не съм системен архитект, но ми звучи като ефективно решение. Всъщност това е толкова разбираемо и очевидно решение, че мисълта за изчакване до актуализацията на iOS 5 тъй като подобна функционалност ми дава малък случай на разтърсванията... въпреки че това може да е Talisker от снощи говорене.