2012-03-15 5 views
0

je l'ai écrit comme:problème avec NSTimer iOS SDK

[NSTimer scheduledTimerWithTimeInterval:900 target:self selector:@selector(CallGetCounts) userInfo:nil repeats:YES]; 

cela signifie que je veux répéter ma minuterie pour toutes les 5 minutes mais ma minuterie ne répète pas, pas en mesure de trouver la raison

peut tout s'il vous plaît dites-moi la réponse. J'ai écrit ceci dans la méthode "AppDelegate" -> "- (void)applicationDidEnterBackground:(UIApplication *)application".

+0

i testé avec "[NSTimer scheduledTimerWithTimeInterval: 1.0 cible: auto sélecteur: @selector (CallGetCounts) userInfo: néant répète: OUI];" aussi mais à ce moment mon timer ne se répète pas – user1179681

+0

Quel genre d'objet est 'self'? Est-ce qu'il est publié? Est-ce qu'il répond réellement à la méthode 'CallGetCounts'? Pouvons-nous voir une partie de votre code? – jtbandes

+0

Je l'ai écrit dans la méthode "AppDelegate" -> "- (void) applicationDidEnterBackground: (UIApplication *)". – user1179681

Répondre

2

En arrière-plan, votre code est suspendu et aucun événement de minuterie ne sera reçu tant que votre application ne sera pas à nouveau visible.

Vous devriez aller pour les notifications locales programmées pour se réveiller de l'arrière-plan après un intervalle donné. Cependant, ils afficheront un popup ou une bannière à l'utilisateur qu'il doit d'abord accepter.

Voici quelques étapes sur la façon de le faire:

// When you want to schedule: 
UILocalNotification* localNotification = [[[UILocalNotification alloc] init] autorelease]; 
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5]; // seconds 
localNotification.timeZone = [NSTimeZone defaultTimeZone]; 
localNotification.alertBody = @"Body text"; 
localNotification.alertAction = @"Button text"; 
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

// when it's fired it will call your AppDelegate's didReceiveLocalNotification 
- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)localNotification 
{ 
    // you can handle timer event here and eventually re-schedule your local notification 
} 
1

Normalement, lorsqu'une application entre en arrière-plan, elle est suspendue de sorte qu'elle ne s'exécute pas du tout. En particulier, NSTimers ne se déclenche pas. Si vous voulez que quelque chose se passe en arrière-plan, vous devez configurer votre application pour qu'elle s'exécute en arrière-plan et utilisez l'une des méthodes approuvées pour effectuer la tâche que vous souhaitez effectuer. L'exécution de NSTimers ne fait pas partie des tâches prises en charge.

Je vous suggère de lire le guide de programmation iOS et en particulier la section Background Execution and Multitasking.

1

L'instance de UILocalNotification feux de la boîte de pop-up (et Suscite votre application) chaque fois qu'il a déclenché selon le temps que vous définissez, Si vous avez vraiment choisi le UILocalNotification alors Here sont les bons liens tutoriel discuté en fil S.O. J'espère que ceux qui vous aideront.