我们可以在应用程序被最小化之后调用方法吗?

iOS版

我们可以在应用程序被最小化之后调用方法吗?

例如,5秒后被称为applicationDidEnterBackground:

我使用这个代码,但test方法不要调用

 - (void)test { printf("Test called!"); } - (void)applicationDidEnterBackground:(UIApplication *)application { [self performSelector:@selector(test) withObject:nil afterDelay:5.0]; } 

您可以使用后台任务API在后台处理后调用方法(只要您的任务不需要太长时间 – 通常最长允许的时间为10分钟)。

iOS在应用程序背景时不会让定时器触发,所以我发现在应用程序后台调度后台线程,然后将该线程置于睡眠状态,具有与定时器相同的效果。

把下面的代码放到你的应用- (void)applicationWillResignActive:(UIApplication *)application方法:

 // Dispatch to a background queue dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ // Tell the system that you want to start a background task UIBackgroundTaskIdentifier taskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ // Cleanup before system kills the app }]; // Sleep the block for 5 seconds [NSThread sleepForTimeInterval:5.0]; // Call the method if the app is backgrounded (and not just inactive) if (application.applicationState == UIApplicationStateBackground) [self performSelector:@selector(test)]; // Or, you could just call [self test]; here // Tell the system that the task has ended. if (taskID != UIBackgroundTaskInvalid) { [[UIApplication sharedApplication] endBackgroundTask:taskID]; } });