如何监听 App 被关闭时 - iOS

本文深入探讨了iOS应用的生命周期管理,特别是如何通过调用特定的方法确保应用能够在进入后台时正确触发applicationWillTerminate方法,这对于保存应用状态至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Appdelegate 里

applicationWillTerminate

是处理应用程序将终止的时候

按道理,我们在这个地方去写我们 App 被关闭时的操作就行。

但是,我发现 App 关闭的时候,并不会走到这里来。

然后我看了下系统的注释:当应用程序即将终止时调用。如果适当的保存数据。可看 appropriate. See also applicationDidEnterBackground:. 这个方法

好像和我遇到的问题没啥关系! 我只想在 App 关闭的时候调用

// 应用程序将终止
- (void)applicationWillTerminate:(UIApplication *)application {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    NSLog(@"applicationWillTerminate");
}

好了,答案来了。

我们到 applicationDidEnterBackground 执行个方法,代码如下:

// 我们到 applicationDidEnterBackground 执行下 beginBackgroundTaskWithExpirationHandler
- (void)applicationDidEnterBackground:(UIApplication *)application {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    [[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:^(){
    }];
    NSLog(@"applicationDidEnterBackground");
}

// 这时候你就会发现 applicationWillTerminate 这货被调用了,有没有人过来解释下。。
- (void)applicationWillTerminate:(UIApplication *)application {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    NSLog(@"applicationWillTerminate");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值