Делегатите на приложения не се обаждат, докато приложението е влязло във фонов режим

Внедрявам приложение за iPhone. Изтеглям данни от сървъра, като използвам асинхронна заявка в приложението. Ако натисна бутона за начална страница, делегатът на моето приложение не се обажда директно. След завършване на изтеглянето на данни от сървъра се извикват методите за делегат на приложението .И така, как мога да получа незабавно повикване за делегат в моето приложение.

Всяка помощ може да бъде оценена.


person Rajesh    schedule 01.12.2011    source източник


Отговори (1)


Кои методи за делегиране прилагате? Можете ли да публикувате какво сте опитали (по отношение на кода) тук? Имайте предвид, че след като приложението ви бъде преместено на заден план, можете да изпълнявате само краткосрочни задачи, за да запазите живота на батерията.

Този пример е предоставен от Apple:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    UIApplication*    app = [UIApplication sharedApplication];

    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
        // Clean up any unfinished task business by marking where you.
        // stopped or ending the task outright.
        [app endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }];

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

        // Do the work associated with the task, preferably in chunks.

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

Ако искате да изпълнявате по-дълго изпълнявани задачи, вие се нуждаете от специални разрешения и дори тогава можете да изпълнявате само определена подгрупа от действия. Те се обсъждат тук:

Ръководство за програмиране на приложения за iOS: Състояния на приложението и многозадачност

person Craig Otis    schedule 01.12.2011