我想在用戶按Home鍵時保存核心數據。我想從-applicationDidEnterBackground:
這樣做,但它沒有被調用。這可能是因爲你無法從這裏保存核心數據,或者只是因爲沒有足夠的時間來完成操作。但它的工作從-applicationWillResignActive:
我只是好奇,這是最好的代表方法來做到這一點,爲什麼-applicationDidEnterBackground:
不起作用。 (正如你可以從輸出這兩種方法都被調用,如果我刪除看到-applicationWillResignActive:
沒有保存發生在所有的,所以它不是當一個人擋住了其他的情況)當用戶退出應用程序時保存核心數據?
// CALLS SAVE
- (void)applicationWillResignActive:(UIApplication *)application {
[[self model] saveCoreData:@"SAVE FROM: applicationWillResignActive"];
NSLog(@"APPDEL: %s", __PRETTY_FUNCTION__);
}
// DOES NOT CALL SAVE
- (void)applicationDidEnterBackground:(UIApplication *)application {
[[self model] saveCoreData:@"SAVE FROM: applicationDidEnterBackground"];
NSLog(@"APPDEL: %s", __PRETTY_FUNCTION__);
}
。
// CONSOLE OUTPUT
2013-03-21 cvb[6724:907] APPDEL: -[AppDelegate applicationWillResignActive:]
2013-03-21 cvb[6724:907] APPDEL: -[AppDelegate applicationDidEnterBackground:]
2013-03-21 cvb[6724:907]
2013-03-21 cvb[6724:907] SAVE: SAVE FROM: applicationWillResignActive
2013-03-21 cvb[6724:907] SAVE: Saving successful ...
編輯:
這是我最後還是沒買:
- (void)applicationDidEnterBackground:(UIApplication *)application {
__block UIBackgroundTaskIdentifier bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
[[self model] saveCoreData:@"[ENTERING BACKGROUND]"];
}
乾杯郭,你也打我吧。 – fuzzygoat 2013-03-21 12:48:32
applicationDidEnterBackground中模型的值是什麼?我認爲這不是零? – occulus 2013-03-21 13:05:42
您的saveCoreData方法是否異步工作?還是它阻塞,直到完成保存?儲蓄需要多長時間? – occulus 2013-03-21 13:06:31