【问题标题】:Timer in SwiftUI works in background for simulator but not on real phoneSwiftUI 中的计时器在模拟器的后台工作,但不能在真机上工作
【发布时间】:2020-06-09 01:14:00
【问题描述】:

我正在 swiftui 上制作一个计时器应用程序,当我在模拟器上运行我的应用程序时,计时器工作正常并在后台运行。当我在手机上测试它时,当应用程序进入后台时计时器停止。此外,当我的应用进入手机后台时,会出现以下消息:

无法结束 BackgroundTask:不存在标识符为 1 (0x1) 的后台任务,或者它可能已经结束。中断 UIApplicationEndBackgroundTaskError() 进行调试。

【问题讨论】:

  • 那么你的问题是什么?
  • 如果您的问题与背景问题有关。您使用的真实设备或模拟器是什么。此消息必须显示在控制台上。
  • 我的问题是,当我尝试在后台运行计时器时,它停止运行。
  • 有同样的问题。您找到解决问题的方法了吗?

标签: timer background swiftui


【解决方案1】:

也许您可以尝试这种方式来运行某些东西并在后台线程上更改您的 UI 内容:

DispatchQueue.global(qos: .background).async {
    print("Background Thread is running")

    DispatchQueue.main.async {
        print("You can change UI stuff here.")
        label.text = "Done." //UIKit
        self.myLabelTxt = "Done." //SwiftUI's string state variable 
    }
}

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    相关资源
    最近更新 更多