scenePhase 的作用 -- 检测 APP 是否在后台

简介: SwiftUI 提供了一个名为 `scenePhase` 的 环境变量,它在应用程序在前台、后台和非活动状态之间切换时会自动更新。你可以在 App 结构体本身或任何 SwiftUI 视图中观察这些状态的变化。

scenePhase 的作用

>
>

SwiftUI 提供了一个名为 scenePhase 的 环境变量,它在应用程序在前台、后台和非活动状态之间切换时会自动更新。你可以在 App 结构体本身或任何 SwiftUI 视图中观察这些状态的变化。

首先,添加一个属性来追踪这个键:

@Environment(\.scenePhase) var scenePhase

然后,你可以将任何你想要的逻辑添加到你的视图中,或者使用 onChange() 来直接观察变化。

例如,我们可以编写一个视图来监视 scenePhase 并在 Xcode 的调试控制台中打印一些文本,以便在阶段变化时进行观察:

struct ContentView: View {
    
    
   @Environment(\.scenePhase) var scenePhase

   var body: some View {
    
     
       Text("Test")
           .onChange(of: scenePhase) {
    
     newPhase in
               if newPhase == .inactive {
    
    
                   print("非活动")
               } else if newPhase == .active {
    
    
                   print("活动")
               } else if newPhase == .background {
    
    
                   print("后台")
               }
           }
   }
}

2023-08-10 10.44.16

2023-08-10 10.45.24

正如你所见,有三种状态:

  • 活动状态:当你的应用程序在前台且对用户交互时使用,这意味着用户正在使用它。
  • 后台状态:当你的应用程序当前不可见时使用,因此你应该减少工作量。
  • 非活动状态:当你的应用程序可见但用户无法直接交互时使用。例如,如果在运行应用程序时进入多任务模式,你可以在其他应用程序窗口旁边看到你的应用程序窗口,但并未直接使用它。

通过结合 scenePhase 属性和 onChange() 修饰器,你可以响应应用程序状态的变化,并相应地调整其行为。这在管理资源、保存数据或在应用程序转入后台或变得非活动时暂停某些活动方面特别有用。

注意,这段代码应放置在 SwiftUI 视图的 body 属性中。你也可以将此逻辑直接应用于你的 App 结构体,以观察应用程序层级的场景阶段变化。

这种方法为确保应用程序根据其当前的可见性和与用户的互动状态来适当地行事提供了一种简单而有效的方式。

相关文章
|
架构师 Java
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
202 0
|
5月前
|
人工智能 JSON 小程序
【一步步开发AI运动APP】七、自定义姿态动作识别检测——之规则配置检测
本文介绍了如何通过【一步步开发AI运动APP】系列博文,利用自定义姿态识别检测技术开发高性能的AI运动应用。核心内容包括:1) 自定义姿态识别检测,满足人像入镜、动作开始/停止等需求;2) Pose-Calc引擎详解,支持角度匹配、逻辑运算等多种人体分析规则;3) 姿态检测规则编写与执行方法;4) 完整示例展示左右手平举姿态检测。通过这些技术,开发者可轻松实现定制化运动分析功能。
|
2月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
162 4
|
4月前
|
人工智能 小程序 API
【一步步开发AI运动APP】九、自定义姿态动作识别检测——之关键点追踪
本文介绍了【一步步开发AI运动APP】系列中的关键点追踪技术。此前分享的系列博文助力开发者打造了多种AI健身场景的小程序,而新系列将聚焦性能更优的AI运动APP开发。文章重点讲解了“关键点位变化追踪”能力,适用于动态运动(如跳跃)分析,弥补了静态姿态检测的不足。通过`pose-calc`插件,开发者可设置关键点(如鼻子)、追踪方向(X或Y轴)及变化幅度。示例代码展示了如何在`uni-app`框架中使用`createPointTracker`实现关键点追踪,并结合人体识别结果完成动态分析。具体实现可参考文档与Demo示例。
|
5月前
|
人工智能 小程序 API
【一步步开发AI运动APP】八、自定义姿态动作识别检测——之姿态相似度比较
本文介绍了如何通过姿态相似度比较技术简化AI运动应用开发。相比手动配置规则,插件`pose-calc`提供的姿态相似度比较器可快速评估两组人体关键点的整体与局部相似度,降低开发者工作量。文章还展示了在`uni-app`框架下调用姿态比较器的示例代码,并提供了桌面辅助工具以帮助提取标准动作样本,助力开发者打造性能更优、体验更好的AI运动APP。
|
小程序 API PHP
零成本搭建个人 APP 和小程序后台
虽然网上也有很多人介绍这俩平台的玩法,但都是 2024 年以前的文章,有些平台最新的修改,和自己踩到的坑而别人没提到的细节,我还是想记录一下。
186 9
|
监控 Android开发 开发者
Android经典面试题之实战经验分享:如何简单实现App的前后台监听判断
本文介绍在Android中判断应用前后台状态的两种方法:`ActivityLifecycleCallbacks`和`ProcessLifecycleOwner`。前者提供精细控制,适用于需针对每个Activity处理的场景;后者简化前后台检测,适用于多数应用。两者各有优劣:`ActivityLifecycleCallbacks`更精确但复杂度高;`ProcessLifecycleOwner`更简便但可能在极端场景下略有差异。根据应用需求选择合适方法。
280 2
|
存储 安全 前端开发
APP管理后台OSS技术改造
旨在记录之前使用的上传文件是放在服务器的现在改成了oss更加高效管理
|
前端开发 Android开发 iOS开发
应用研发平台EMAS使用 aliyun-react-native-push 库接入推送和辅助通道,推送都可以收到,但是在App切到后台或者杀掉进程之后就收不到推送了,是需要配置什么吗?
【2月更文挑战第31天】应用研发平台EMAS使用 aliyun-react-native-push 库接入推送和辅助通道,推送都可以收到,但是在App切到后台或者杀掉进程之后就收不到推送了,是需要配置什么吗?
350 2
|
定位技术 开发工具 iOS开发
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
210 0

热门文章

最新文章