iOS-关于如何知道应用被杀死并做相应处理

时间:2021-10-26 06:53:55

需求:由于近期项目需求,用户行为不可控,某些用户在执行某些操作之后,强行杀死应用,导致部分统计数据没办法实时上传。所以需要在用户杀死应用的时候,将当前统计的数据上传到服务器(不持久化的数据)。

经过在网上寻找答案,和自己的验证。

在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