2010-07-02 2 views
0

Во время многозадачности iOS-4 для быстрого переключения контекста у меня есть сомнения относительно сохранения последнего состояния приложения.Сохранение текущего состояния при быстром переключении контекста - iOS4

Нужно ли приложению вручную сохранять последнее состояние в "- (void) applicationDidEnterBackground: (приложение UIApplication *)"? Или iOS-4 позаботится об этом?

В видео он упоминается следующим образом:

-(void)applicationDidEnterBackground:(UIApplication *)application { 
    // save app state 
    [self saveState]; 

    // reduce memory usages 
    .... 

    // prepare UI 
    .... 

    // close listening sockets 
    .... 
} 

Спасибо заранее,

Сунил

ответ

0

После того, как приложение вошел фон, нет никакой гарантии, что он будет когда-нибудь вернуться на первый план , Он может в любой момент времени прекращаться без какого-либо уведомления. Таким образом, вводя фон, вы хотите сохранить состояние или рискнуть потерять его.

Цитирую Apple (источник: http://developer.apple.com/iphone/library/documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html),

Сохранить состояние приложения, прежде чем перейти на задний план. В условиях низкой памяти фоновые приложения удаляются из памяти, чтобы освободить место. Приостановленные приложения сначала очищаются, и до его удаления уведомление не подается. В результате перед перемещением на задний план приложение всегда должно сохранять достаточную информацию о состоянии, чтобы восстановить себя позже, если это необходимо. Восстановление вашего приложения в его предыдущем состоянии также обеспечивает согласованность для пользователя, который ненадолго увидит моментальный снимок основного окна вашего приложения при его перезагрузке.

0

ли приложения должны вручную сохранить последнее состояние в "- (Недействительными) applicationDidEnterBackground: (UIApplication *) применение"? Или iOS-4 позаботится об этом?

Да, если вы хотите, чтобы ваше приложение восстанавливалось после его уничтожения, вам нужно вручную сохранить состояние здесь.

0

Вы должны использовать эти 2 метода в своем делете приложения, чтобы сохранить текущее состояние перед вводом фона/завершения.

- (void)applicationWillResignActive:(UIApplication *)application { 

    /* 
    Sent when the application is about to move from active to inactive state. 
    This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) 
    or when the user quits the application and it begins the transition to the background state. 
    Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. 
    Games should use this method to pause the game. 
    */ 
} 
    - (void)applicationWillTerminate:(UIApplication *)application { 

    /* 
    Called when the application is about to terminate. 
    See also applicationDidEnterBackground:. 
    */ 
}