需求:由於近期項目需求,用戶行為不可控,某些用戶在執行某些操作之后,強行殺死應用,導致部分統計數據沒辦法實時上傳。所以需要在用戶殺死應用的時候,將當前統計的數據上傳到服務器(不持久化的數據)。
經過在網上尋找答案,和自己的驗證。
在appdelegate中去實現兩個api
-(void)applicationDidEnterBackground:(UIApplication *)application { NSLog(@"didenterbackgroud"); [[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:^{ NSLog(@"auto kill app!"); }]; } -(void)applicationWillTerminate:(UIApplication *)application { NSLog(@"kill app !!!!"); }
兩個方法配合使用。如果不實現
beginBackgroundTaskWithExpirationHandler
應用先退到后台,再殺應用,則不會調用
applicationWillTerminate
在應用界面的界面喚起直接殺死應用會調用
applicationWillTerminate
如上兩個方法和一個block配合使用,則無論應用以什么方式被殺死都會調用
applicationWillTerminate
當應用被用戶退到后台,一定時間之后會自動調用
beginBackgroundTaskWithExpirationHandler
