PerformSelector Nach Verzögerung läuft nicht in hintergrund-Modus - iPhone

Ich habe eine voip-Anwendung, die läuft ständig im hintergrund als gut.
Während ich mich im hintergrund, ich rufe aus der main-thread: (zum herstellen der Netzwerkverbindung, falls ich die diagnose von einem Netzwerk verloren).

[self performSelector :@selector(Reconnect:) withObject:nil afterDelay:60.0];

Allerdings, der Wähler wird nur durchgeführt, wenn meine app zurück in den Vordergrund zu stellen.
Sollte ich etwas tun, insbesondere, um den Selektor immer ausgeführt, während im hintergrund ?

Dank

Edit:

-(void) reconectInBackgroundAfterDelay:(NSTimeInterval) dealy
{
    NSLog(@"reconectInBackgroundAfterDelay");
    UIApplication*   app = [UIApplication sharedApplication];

    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
        [app endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }];

    //Start the long-running task and return immediately.
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        [self performSelector :@selector(Reconnect:) withObject:nil afterDelay:dealy];

        [app endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    });
}

Fügte ich diesen code statt, aber immer noch den "Reconnect" Methode ist nicht immer aufgerufen, nachdem die Verzögerung zur Verfügung gestellt.
Ich nenne das "reconectInBackgroundAfterDelay" - Methode, während ich mich schon in den hintergrund.

Irgendwelche anderen Vorschläge ?

Edit 2
Eine Lösung gefunden. Siehe unten

InformationsquelleAutor Idan | 2011-10-09

Schreibe einen Kommentar