2010-07-16 27 views
3

Contexte: L'application Workout est conçue pour avoir une chronologie continue que je peux ensuite saisir en temps réel ce que je fais en exercice, puis représenter graphiquement les résultats en temps réel. Problème: Lorsque l'iphone dort trop longtemps, nous perdons la continuité du scénario et il redémarre. Nous n'avons pas compris comment maintenir la mise à jour de la chronologie pendant le sommeil de l'application. Je lui ai demandé de faire un appel à l'horloge interne de l'Iphone et de faire le calcul sur l'endroit où le spectateur devrait être et de le déplacer à ce point sur la ligne de temps. Cependant, il ne peut pas comprendre comment faire cela. Solutions: Avez-vous entendu parler de toute façon de faire appel à l'horloge interne? Peut-être une meilleure question, pouvez-vous penser à une autre façon de contourner le problème en général?Chronologie continue dans Iphone App?

Répondre

1

Vous pouvez essayer CACurrentMediaTime qui renvoie mach_absolute_time en quelques secondes. Cela devrait être précis pendant le sommeil.

1

Il n'y a pas de façon certaine qui peut vous assurer que l'application fonctionnera en arrière-plan pour toujours. (Si c'est ce que vous avez besoin) Même Steve a dit est multitâche, les ressources de l'iPhone sont très limitées et cela signifie que votre application sera peut-être tué alors qu'il est en arrière-plan sans aucune sorte de notification. (Sauf par la notification que vous obtenez en entrant dans l'arrière-plan)

La meilleure chose que vous pouvez faire est de réduire l'utilisation de vos ressources. (libérer autant d'objets que possible) Parce que lorsque le système a besoin de mémoire, il commence à tuer les applications en arrière-plan, en commençant par l'application qui utilise plus de ressources.

Si vous implémentez des protocoles de streaming, alors c'est différent.

Espérons que cela aide

+0

Dites que je ferme à partir de l'application avec le bouton d'accueil. Ma compréhension est que cela "gèle" l'application. Y a-t-il un moyen de le ramener à la vie tout en accélérant la chronologie? thx Nacho! – scottorn

+1

OS ne le gèle pas instantanément. Il est encore vivant pendant un ou plusieurs jours, cela dépend (voir mon explication ci-dessus). Vous devrez écrire votre méthode de mise à jour en utilisant CACurrentMediaTime ou CFAbsoluteTimeGetCurrent et recalculer vos données. Vous souhaitez probablement écrire cette méthode à l'intérieur de -applicationDidBecomeActive: à partir de UIApplicationDelegate – nacho4d