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 结构体,以观察应用程序层级的场景阶段变化。

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

相关文章
|
6天前
|
架构师 Java
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
54 0
|
6天前
|
前端开发 Android开发 iOS开发
应用研发平台EMAS使用 aliyun-react-native-push 库接入推送和辅助通道,推送都可以收到,但是在App切到后台或者杀掉进程之后就收不到推送了,是需要配置什么吗?
【2月更文挑战第31天】应用研发平台EMAS使用 aliyun-react-native-push 库接入推送和辅助通道,推送都可以收到,但是在App切到后台或者杀掉进程之后就收不到推送了,是需要配置什么吗?
34 2
|
10月前
|
小程序
微信小程序和uni.app后台播放
微信小程序和uni.app后台播放
|
Android开发 Kotlin
判断App是否处于后台/前台,使用ActivityLifecycleCallbacks稳得很!
RunningAppProcessInfo.IMPORTANCE_FOREGROUND,或者RunningTask来判断过, 但是遇到过偶然失灵或者无法适配现在的android版本。毕竟太老了,现在用点进去经常会有@Deprecated注解,表示废弃了。
|
机器学习/深度学习 人工智能 分布式计算
基于YOLOv5算法的APP弹窗检测方案
基于YOLOv5算法的APP弹窗检测方案
|
iOS开发
IOS检测版本更新(***为app id)
IOS检测版本更新(***为app id)
56 0
|
存储 缓存 安全
常见 APP 风险检测|学习笔记
快速学习常见 APP 风险检测
171 0
常见 APP 风险检测|学习笔记
微信支付:app端提示微信签名失败,errCode=-2;后台服务端返回成功
微信支付:app端提示微信签名失败,errCode=-2;后台服务端返回成功
218 0
|
Android开发
Android 音乐APP(五)音乐通知栏、后台播放音乐
Android 音乐APP(五)音乐通知栏、后台播放音乐
1040 0
Android 音乐APP(五)音乐通知栏、后台播放音乐
|
存储 数据采集 人工智能
App隐私合规“免费”自动化检测
App隐私合规检测提供了全面的隐私合规检测报告和专家建议,从确保形式合规(隐私政策文本合规性)及实质合规(代码层合规性)的一致性,从个人信息收集、权限使用场景、超范围采集、隐私政策、三方SDK等多个维度帮助企业和开发者提前识别App隐私合规相关风险,规避监管通报、应用下架等重大风险。
3555 1
App隐私合规“免费”自动化检测