如何监听 App 被关闭时 - iOS

本文深入探讨了iOS应用的生命周期管理,特别是如何通过正确地使用applicationDidEnterBackground和beginBackgroundTaskWithExpirationHandler来确保applicationWillTerminate方法能够被调用,这对于保存应用状态至关重要。

在 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");
}复制代码
### UniAppX iOS App 使用 WebView 方法教程 #### 创建 WebView 组件实例并初始化配置 在 UniAppX 中创建一个 WebView 实例,通常需要设置其基本属性以及指定加载的内容源。对于 iOS 平台而言,可以利用原生组件 `web-view` 来实现这一功能。 ```html <template> <view class="container"> <!-- uni-app 提供的 web-view 组件 --> <web-view :src="url"></web-view> </view> </template> <script> export default { data() { return { url: 'https://example.com' // 要加载网页URL地址 }; } }; </script> ``` 此代码片段展示了如何定义一个简单的 Vue.js 单文件组件,在其中引入了 `<web-view>` 标签用于展示外部网站内容[^1]。 #### 配置手势交互行为 为了增强用户体验,可能还需要调整 WebView 内部的手势操作逻辑,比如允许或禁用手势返回导航等功能。这可以通过修改应用 manifest 文件中的相应选项完成: ```json { "plus": { "distribute": {}, "nativeConfig": { "ios": { "popGesture": "hide" } } } } ``` 上述 JSON 片段说明了怎样通过编辑项目的配置文件来控制 WebView 的侧滑关闭特性,这里选择了隐藏该手势的效果[^3]。 #### 处理音频视频播放问题 考虑到某些情况下用户可能会希望即使应用程序退至后台也能继续收听音乐或是观看影片,因此有必要针对这种情况作出特别安排。一种解决方案是在检测到程序即将转入后台运行之前调用特定 JavaScript 函数停止多媒体资源的自动播放过程。 ```javascript // 在适当的地方监听页面可见状态变化事件 document.addEventListener('visibilitychange', function () { if (document.hidden) { // 当页面不可见(即转为后台),执行暂停命令 document.querySelectorAll('video,audio').forEach(function (mediaElement) { mediaElement.pause(); }); } else { // 页面重新变为前台可视状态下恢复播放或其他处理... } }); ``` 这段脚本实现了监听页面能见度改变的状态,并据此决定是否应该中断正在播放的声音或影像流[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值