切后台开启任务避免挂起

/**  进入后台 */
- (void) appEnterBackground {
    // 开启后台任务,避免被suspend
    __block UIBackgroundTaskIdentifier bgTask;
    dispatch_queue_t bgTaskQ = dispatch_queue_create("com.ksyun.backgroundTask.queue", DISPATCH_QUEUE_SERIAL);
    bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^ {
        [[UIApplication sharedApplication] endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }];
    dispatch_async(bgTaskQ, ^{
        int cnt = 0;
        while ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) {
            NSLog(@"runing %d", cnt++);
            sleep(1);
        }
        [[UIApplication sharedApplication] endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    });
}

posted @ 2025-06-25 21:03  CoderWGB  阅读(21)  评论(0)    收藏  举报