我正在后台下载数据。因此,如果用户按下主页按钮并通过双击应用程序图标强制退出应用程序,那么我需要一些数据清理。我尝试在委托方法中进行数据清理,applicationWillTerminate
但应用程序在崩溃时没有调用此方法。我无法进行数据清理,applicationDidEnterBackground
因为我的应用程序会在后台保持数据下载。我搜索了很多小时..但我对此一无所知。
谁能告诉我,有没有办法在应用程序崩溃之前调用方法(清理数据)。
谢谢!
我正在后台下载数据。因此,如果用户按下主页按钮并通过双击应用程序图标强制退出应用程序,那么我需要一些数据清理。我尝试在委托方法中进行数据清理,applicationWillTerminate
但应用程序在崩溃时没有调用此方法。我无法进行数据清理,applicationDidEnterBackground
因为我的应用程序会在后台保持数据下载。我搜索了很多小时..但我对此一无所知。
谁能告诉我,有没有办法在应用程序崩溃之前调用方法(清理数据)。
谢谢!
如果您的应用程序崩溃或被强制退出,您将无法清理数据。您可以改为在下次打开数据时清理数据。根据您正在做的事情,您可以在内部使用一个标志NSUserDefaults
,让您知道是否需要清理数据。
例如,当下载开始时,您可以设置:
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:@"pendingDownload"];
[[NSUserDefaults standardUserDefaults] synchronize];
下载完成时:
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"pendingDownload"];
[[NSUserDefaults standardUserDefaults] synchronize];
内部didFinishLaunchingWithOptions
:
if([[[NSUserDefaults standardUserDefaults] objectForKey:@"pendingDownload"] boolValue]){
// clean data
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"pendingDownload"];
[[NSUserDefaults standardUserDefaults] synchronize];
}