2012-02-13 2 views
0

Как и в моем приложении, если какое-либо действие в отношении «httpcall» отправлено в mainthread, и мое приложение ожидает ответа от сервера и кнопки дома с таким же временем нажатие, хотя приложение входит в фон, но делегаты IOS (например, «didEnterBackground») не получают вызов до получения ответа.Делегаты IOS (например, «didEnterBackground») не вызываются при вводе фона

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

Примечание: Я использую код CyberLink для своих HTTP-сообщений.

+0

это запрос синхронизации ??? –

+0

@Inder Все HTTP-вызовы в моем проекте - Sync.Actually. Я хочу закрыть все эти HTTP-запросы при вводе фона. Но проблема в том, что методы делегата не вызываются до получения ответа. – Baidyanath

+0

запросы синхронизации блокируют основной поток, поэтому didEnterBackground не вызывается. сделайте их асинхронными. –

ответ

0

Как Apple says:

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

Я думаю, что вы пытаетесь сделать что-то в фоновом режиме, для чего didEnterBackground недостаточно. Используйте Grand Central Dispach istead.

0

Поскольку ваш метод Http имеет синхронный тип. Ваш пользовательский интерфейс застынет до ответа.

Что вы сделали в простых словах, сообщите ОС, чтобы выполнить эти HTTP-запросы, прежде чем делать что-либо еще.

При нажатии на дом система будет ждать .. в течение нескольких секунд, чтобы получить ответ .. в противном случае он покинет приложение. так как он нарушает правила приложения .. (вы блокируете OS неограниченно)

Выбранная область didEnterBackground будет вызываться только в том случае, если эти запросы будут завершены или не будут вызываться в случае, когда ОС решает прекратить действие вашего приложения.

+0

любой способ решить эту проблему – Baidyanath

+0

отправить асинхронные http-запросы ... таким образом, они будут выполняться на фоне .. Ваш пользовательский интерфейс не будет заморожен, а didEnterBackground будет вызван слишком – Shubhank

+0

Я пытался с GCD теперь работать, но все же, если у вас есть пример код, использующий GCD, поделился им. – Baidyanath

Смежные вопросы