在后台继续运行倒数计时器

时间:2019-06-21 02:54:35

标签: swift

我正在为我的应用程序画龙点睛,但是当应用程序进入后台时,我运行的5分钟倒数计时器会暂停。 我需要一个专家来帮助我解决这个问题,我几乎看不懂我阅读的每个解决方案。

我曾尝试与其他人的代码一起观看教程,但是不知道自己在做什么,很难将其实现为我自己的代码。由于我只是从GitHub上的某人那里借来的代码。

RUN apk update && apk add --no-cache bash \
        alsa-lib \
        at-spi2-atk \
        atk \
        cairo \
        cups-libs \
        dbus-libs \
        eudev-libs \
        expat \
        flac \
        gdk-pixbuf \
        glib \
        libgcc \
        libjpeg-turbo \
        libpng \
        libwebp \
        libx11 \
        libxcomposite \
        libxdamage \
        libxext \
        libxfixes \
        tzdata \
        libexif \
        udev \
        xvfb \
        zlib-dev \
        chromium \
        chromium-chromedriver

我尝试使用代码在后台运行时停止计时器,并在前台运行时对其进行更新,但是我找不到找到一种在计时器关闭时捕获计时器值的方法

1 个答案:

答案 0 :(得分:0)

在AppDelegate中尝试此操作,并在AppDelegate中管理您的代码。

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var timerControl = 0
    var backgroundTaskIdentifier: UIBackgroundTaskIdentifier?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerCode), userInfo: nil, repeats: true)
        backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: {
        })
        return true
    }

    @objc func timerCode() {
        timerControl = timerControl + 1
        if timerControl == 5 {
            /// -> Do Something
        } else {
            /// -> Stop the task
            UIApplication.shared.endBackgroundTask(self.backgroundTaskIdentifier!)
        }
    }
}