Nous connaissons tous la leçon « multitâche = capacité d’effectuer plusieurs processus en même temps ». Nous l'utilisons dans nos ordinateurs sans être particulièrement conscients de sa présence. La commutation entre les applications ou les fenêtres d'une application s'effectue (pour nous) en temps réel et nous prenons cette capacité du système d'exploitation pour acquise.
Tâche différente
Le système d'exploitation alloue le processeur à toutes les applications dans de petits intervalles de temps. Ces périodes de temps sont si courtes que nous ne pouvons pas les remarquer, il semble donc que toutes les applications utilisent le processeur en même temps. On pourrait le penser multitâche dans iOS 4 fonctionne exactement de la même manière. Ce n'est pas ainsi. La principale raison est bien sûr la capacité de la batterie. Si toutes les applications fonctionnaient vraiment en arrière-plan, nous devrions probablement chercher un socket dans quelques heures.
La plupart des applications compatibles avec iOS 4 sont mises en « mode suspendu » ou mises en veille après avoir appuyé sur le bouton Accueil. Une analogie pourrait être celle de fermer le couvercle d’un ordinateur portable, qui passe immédiatement en mode veille. Après avoir ouvert le couvercle, l'ordinateur portable se réveille et tout est exactement dans le même état qu'avant la fermeture du couvercle. De plus, il existe des applications pour lesquelles appuyer sur le bouton Accueil les fait se terminer. Et nous entendons par là une véritable résiliation. Les développeurs ont le choix parmi ces méthodes utiliser.
Mais il existe une autre catégorie d'applications. Ce sont les applications qui fonctionnent réellement en arrière-plan, même si vous faites quelque chose de complètement différent sur votre iDevice. Skype est un bon exemple car il nécessite une connexion Internet constante. D'autres exemples pourraient être des applications diffusant de la musique de fond (Pandora) ou des applications nécessitant une utilisation constante du GPS. Oui, ces applications vident votre batterie même lorsqu'elles s'exécutent en arrière-plan.
Dormir ou abattre ?
Certaines applications compatibles avec iOS 4, qui doivent être mises en veille (mises en « mode suspendu ») après avoir appuyé sur le bouton Home, continuent de s'exécuter en arrière-plan. Apple a donné aux développeurs exactement dix minutes pour que l'application accomplisse sa tâche, quelle qu'elle soit. Disons que vous téléchargez un fichier dans GoodReader. Soudain, quelqu’un veut vous appeler et il vous suffit d’accepter cet appel important. L'appel n'a pas duré plus de dix minutes, vous reviendrez sur l'application GoodReader. Le fichier est peut-être déjà téléchargé ou est en cours de téléchargement. Que faire si l'appel dure plus de dix minutes ? L'application, dans notre cas GoodReader, devra arrêter son activité et indiquer à iOS qu'elle peut être mise en veille. Si elle ne le fait pas, elle sera impitoyablement supprimée par iOS lui-même.
Vous connaissez maintenant la différence entre le multitâche « mobile » et « de bureau ». Si la fluidité et la rapidité de passage d’une application à l’autre sont importantes pour un ordinateur, l’autonomie de la batterie est toujours la chose la plus importante pour les appareils mobiles. Le multitâche a également dû être adapté à ce fait. Ainsi, après avoir lu cet article, si vous appuyez deux fois sur le bouton Accueil, vous ne verrez plus la « barre des applications exécutées en arrière-plan », mais essentiellement uniquement la « liste des applications récemment utilisées ».
Auteur : Daniel HruškaSource: onemoretap.com
hmm, intéressant :) J'ai toujours pensé que c'était toujours similaire à la façon dont cela peut être fait sous Unix. Que l'application n'a reçu aucun temps CPU et que le processus reste simplement en mémoire, toutes les ressources ont été allouées. j'ai donc dû appuyer deux fois sur home et arrêter immédiatement l'application pour la supprimer. Cela signifie-t-il que même s'il y a une icône d'application dans la feuille cachée inférieure, l'application est toujours fermée depuis longtemps (après 10 minutes) ?
Dans la liste du bas se trouvent simplement les applications ouvertes les plus récemment, dont certaines peuvent encore fonctionner, d'autres sont suspendues et d'autres sont complètement fermées. La suppression manuelle de l'application de la liste a pour « effet secondaire » que si elle est en cours d'exécution (ou est suspendue), elle sera terminée.
L'application doit s'informer elle-même de ces 10 minutes supplémentaires et il n'est pas garanti qu'elle les obtiendra.
Eh bien, cela ne m'a pas débarrassé de mon obsession de fermer l'application de la liste (et si elle consommait accidentellement des ressources, n'est-ce pas ? :-D)
Je crois comprendre que les 10 minutes sont destinées aux applications qui doivent fonctionner en arrière-plan et n'entrent pas dans la catégorie « Skype, GPS et lecture de musique ». D'autres applications passent en mode suspendu et restent en mémoire jusqu'à ce que la mémoire soit nécessaire à d'autres fins.
Le mode suspendu présente l'avantage que si vous devez tuer l'application, vous ne perdrez pas ses données, tout sera sauvegardé au moment du passage en mode suspendu.
ou, dans le cas par exemple de la lecture, l'équivalent de la commande bg / fg
Et qu’en est-il du lecteur ou des autres applications exécutées en arrière-plan pendant un certain temps ? Je veux dire, est-ce que je peux « choisir » en tant que développeur, ou est-ce que cela doit être approuvé par Apple d'une manière ou d'une autre ?
Pour que l'application puisse réellement fonctionner en arrière-plan pendant une durée illimitée, elle doit effectuer (enregistrer) l'une des actions suivantes :
– Utiliser les services de localisation (GPS)
– Jouer de la musique en arrière-plan
– Utiliser la VOIP (Voix sur IP)
D'après le titre (un regard sous le capot), je m'attendais à ce que l'article contienne une explication un peu plus détaillée avec des détails techniques. Cela ressemble plus à un perex à l’article. Si c'est du perex, à quand la suite ? Pouvez-vous obtenir un remboursement ? :-)
et qu'aimeriez-vous savoir plus en détail ?
D'un article avec "sous le capot" dans le titre, j'attendrais une description technique détaillée (l'auteur pourrait analyser, par exemple, la surcharge lors du changement d'application, ou la façon dont l'accès simultané aux ressources système est géré), une comparaison avec d'autres modèles (par exemple, avec un iPhone jailbreaké). Il est idéal de le sauvegarder avec quelques mesures. J'attendais simplement bien plus d'un article dont le titre contient "sous le capot" que cette description très superficielle.
Existe-t-il un client ICQ qui s'exécute en continu en arrière-plan comme Skype et ne coupe pas la connexion ?
l'application a 10 secondes pour passer en mode suspension, pas 10 minutes... et pendant ce processus, certaines parties peuvent ou non "se bloquer" sur les services backend, dont certains ont déjà été répertoriés ci-dessus - c'est ce qu'Apple appelle "intelligent". " multitâche.... puis le système l'a abattue
L'application peut nécessiter un délai supplémentaire si quelque chose est en cours de téléchargement, de téléchargement ou de traitement. Cela n'a rien à voir avec le GPS, la VoIP ou la lecture de musique, qui fonctionnent en mode minimaliste pour une durée illimitée.