2010-08-11 13 views
1

Je suis en train d'implémenter une logique de lecture à partir du socket TCP en mode d'arrière-plan.iPhone OS 4.0.x - blocage des opérations d'E/S en arrière-plan

CFReadStreamRead La fonction est utilisée pour extraire des données du socket et pour l'instant tout fonctionne correctement. Mais je me demande comment iPhone OS 4.x traite le blocage des opérations d'E/S en mode d'arrière-plan. Par exemple: CFReadStreamRead fonction peut bloquer pendant des heures en attendant certaines données entrantes.

Existe-t-il des contraintes officielles comme 10 minutes pour les tâches d'arrière-plan? Mon application sera-t-elle détruite par iPhone OS dans le cas d'une opération d'E/S de blocage de longue durée?

Veuillez noter - Je suis ne pas exécuter la fonction d'E/S de blocage dans la tâche d'arrière-plan. Code lui-même est situé dans applicationDidEnterBackground méthode de mon UIApplicationDelegate. L'application elle-même est configurée avec le paramètre "voip" dans le fichier Info.plst + CFReadStream est configuré selon les recommandations d'Apple avec le paramètre kCFStreamNetworkServiceTypeVoIP. Donc, fondamentalement, il s'agit d'un scénario régulier d'application VoIP en mode d'arrière-plan.

Merci!

Répondre

0

Remplacez-le par sleep(86400), attachez-le dans le débogueur et voyez combien de temps il est avant d'être tué. Je ne pense pas que ce sera si long; vous êtes censé répondre à applicationDidEnterBackground: en temps opportun. Il ne vous donnera certainement pas plus de temps que beginBackgroundTaskWithExpirationHandler:.

Essayez de vérifier [UIApplication backgroundTimeRemaining].