MacRumors

Skip to Content

Ограничения iPhone SDK: многозадачность, Java, эмуляторы

По мере того, как люди углубляются в детали iPhone SDK от Apple, возникают некоторые интересные вопросы. Одна из рекомендаций для разработчиков, вызывающая беспокойство, взята из Руководства по человеческому интерфейсу для iPhone от Apple:

В любой момент времени может работать только одно приложение для iPhone, а сторонние приложения никогда не работают в фоновом режиме. Это означает, что когда пользователи переключаются на другое приложение, отвечают на телефонный звонок или проверяют свою электронную почту, используемое ими приложение закрывается. Важно убедиться, что пользователи не испытывают никаких негативных последствий из-за этой реальности. Другими словами, пользователи не должны чувствовать, что выйти из вашего приложения для iPhone и вернуться к нему позже сложнее, чем переключаться между приложениями на компьютере.

Справедливости ради стоит отметить, что для большинства приложений такое поведение было бы предпочтительным. Нет никаких причин, чтобы, например, Super Monkey Ball продолжал работать в фоновом режиме, потребляя процессорные циклы и память. Вместо этого, как предполагает Apple, текущее состояние должно быть сохранено и восстановлено при повторном запуске приложения.

Однако это вызвало опасения относительно осуществимости таких приложений, как клиент AIM от AOL, который обычно работает в фоновом режиме, чтобы оповещать пользователя о входящих сообщениях. Однако, согласно одному комментарию, это, похоже, является лишь рекомендацией по дизайну, а не абсолютным техническим ограничением:

Я программист, и я только что попробовал это [используя iPhone SDK], и вы можете держать свое приложение запущенным в фоновом режиме обычным способом, как это делают ApolloIM и iFob. То есть, переопределяя applicationSuspend.

Другая возможность может заключаться в том, что отдельные приложения запускают меньшие фоновые задачи (демоны) вместо полноценных приложений, но осуществимость этого в настоящее время неизвестна.

Все это возвращает нас к ограничениям лицензии SDK Apple и их редакционной политике в отношении App Store iTunes. Согласно лицензионному соглашению Apple, этот обходной путь для многозадачности запрещен:

Приложения должны соответствовать Руководству по человеческому интерфейсу и другой документации, предоставленной Apple.

Даже план Sun по внедрению Java на iPhone технически не разрешен, несмотря на их заявления:

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

Это также может ограничить анонсированные планы по созданию эмулятора ПК для iPhone.

Еще слишком рано говорить о том, насколько строго Apple будет соблюдать эти ограничения при утверждении приложений для App Store iTunes. Будучи единственным дистрибьютором приложений для iPhone, Apple, естественно, хочет ограничивать вредоносные приложения, но остается вопрос, не начнут ли эти ограничения затрагивать действительно полезные приложения. App Store iTunes от Apple запускается в июне 2008 года вместе с новой прошивкой iPhone 2.0.