2011-01-21 2 views
5

При выполнении некоторых тестов я заметил, что когда приложение (без каких-либо фоновых привилегий, то есть voip, gps и т. Д.) Входит в фоновое состояние, любые фоновые потоки (или одновременные NSOperations) работающие в то время, кажется, приостановлены (не завершены), и они продолжаются, когда приложение входит на передний план.Поведение потоков при вводе фона в многозадачном режиме iOS

Я не вижу, как это поведение нитей регистрируется где угодно. Кто-нибудь знает, определено ли это поведение и на что можно рассчитывать?

Было бы полезно не отменять задачи или участвовать в завершении задачи, если поток может безопасно продолжать работу при повторном открытии приложения. Особенно для сложных операций.

Любая информация была бы замечательной. Благодаря!

ответ

9

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

+1

Я знал, что текущее состояние (т. Е. Память) сохраняется, однако я не знаю, что сами разные процессы/потоки сохраняются в одном и том же состоянии, и выполнение просто приостанавливается. –

+3

Казалось бы, состояние приложения и его потоков поддерживается и продолжается, как только он снова появляется на переднем плане. Единственное, что нужно знать, это то, что вы не можете гарантировать, что вызовы делегатов (т. Е. -applicationWillEnterForeground :) будут сделаны. –

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